This is an old question but here is how to share calendar with a user if somebody wants to use it:
This is is done by ACL
Here is an example in php:
public function sharecalendarwithuser($calendar_id, $user_email, $role)
{
$rule = new Google_Service_Calendar_AclRule();
$scope = new Google_Service_Calendar_AclRuleScope();
/*
The type of the scope. Possible values are:
"default" - The public scope. This is the default value.
"user" - Limits the scope to a single user.
"group" - Limits the scope to a group.
"domain" - Limits the scope to a domain.
*/
$scope->setType("user");
$scope->setValue($user_email);
$rule->setScope($scope);
/*
The role assigned to the scope. Possible values are:
"none" - Provides no access.
"freeBusyReader" - Provides read access to free/busy information.
"reader" - Provides read access to the calendar. Private events will appear to users with reader access, but event details will be hidden.
"writer" - Provides read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible.
"owner" - Provides ownership of the calendar. This role has all of the permissions of the writer role with the additional ability to see and manipulate ACLs.
*/
$rule->setRole($role);
$createdRule = $service->acl->insert($calendar_id, $rule);
}
Hope this is helping :)