一. 创建google的auth凭据
注:这里使用了google-api-php-client
②.点击进入导航菜单 --》API和服务
③.进入凭据页面,点击创建凭据生成Auth2.0的凭据
④.在这里选择web应用,直接点击创建
⑤.这时获得了客户端ID和客户端密钥
二. 在Google日历上做成活动
注:这里使用了google-api-php-client
①.开发Google登录授权功能
$client->setApplicationName(‘你的APP Name’)
$client->setClientId(‘Auth凭据的客户端ID’);
$client->setClientSecret(‘Auth凭据的客户端密钥’);
$client->setRedirectUri(‘你的重定向URL’); //需要在Auth凭据的编辑页面对该URL进行授权,否则URL会被拒绝
在这里配置的重定向URL必须是https,所以在开发阶段推荐使用内网穿透工具来进行测试
推荐内网穿透工具:https://ngrok.com/
$client->setAccessType(); //此方法用来设置访问类型,值:offline/online,如果设置为 offline,你的应用程序将获得一个 refresh_token,在访问令牌过期后,用于获取新的访问令牌。如果设置为 online,你的应用程序只会获得一个访问令牌,若访问令牌过期,需要用户重新进行授权。(默认为online)
$client->setApprovalPrompt(); //此方法用来设置用户授权提示类型,值:force/auto,如果设置为force,在用户尝试授权之前,无论之前是否已经授权过,都会显示授权提示页面。如果设置为auto,在用户尝试授权之前,如果之前已经授权过且授权未过期,就不会显示授权提示页面,直接返回访问令牌。(默认为auto)
$client->addScope(); //此方法用来添加授权作用域,以此来指定你的应用程序对用户数据的具体访问权限。
$client->createAuthUrl(); //若前面的数据设置正常,此方法会返回google进行授权的URL,接收到此URL后进行访问会跳转到Google授权页面。
②. 授权回调
用户进行授权后,若授权成功,会返回一个code,若未成功授权,则不会有
若成功授权,需使用google返回的code来换取用户的签名
$accessToken = $client->fetchAccessTokenWithAuthCode(‘授权成功返回的code’); //此方法调用成功会返回授权用户的签名,此签名的有效期限为1小时,若过了有效期限后,此签名会失效,无法再被使用。
若设置了$client->setAccessType(‘offline‘),接收到的用户签名中会携带一个refresh_token,在用户的签名过期后,可以用来换取新的签名,若有需要需要将refresh_token保存起来。
new GoogleCalendar($client); //创建google日历的实例
$event = new Google_Service_Calendar_Event(array(...)); //作成google日历的活动,接收的参数查看google calendar官方文档。
=================================================================================
自己整理的可能会用到的参数:
summary:标题,若不填,会在日程上显示(无标题)
location:地址,若不填则不会显示
description:详细描述,若不填则不显示
attachments:添加附件
attendees:活动的参加者信息
colorId:活动颜色
creator:活动的创建者的信息
organizer:活动组织者信息
=================================================================================
$event = $calendarService->events->insert(’primary‘, $event); //在google日历上作成活动,作成成功会返回一系列参数,包括活动的ID,后续需要用来进行删除操作
三. 在Google日历上删除活动
$client->setAccessToken('一开始获取到的用户签名信息')
$client->isAccessTokenExpired() //判断用户签名是否过期
若用户签名已过期,使用$client->refreshToken(’初次授权的refresh_token‘);
使用以下代码来获得新的用户签名
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$newAccessToken = $client->getAccessToken();
$client->setAccessToken($newAccessToken); // 存储新的用户签名
$calendarService = new GoogleCalendar($client); //创建google calendar实例
$calendarService->events->delete('primary', 日历活动的ID);