一. 創(chuàng)建google的auth憑據(jù)
注:這里使用了google-api-php-client
①.進(jìn)入google develop console頁(yè)面
②.點(diǎn)擊進(jìn)入導(dǎo)航菜單 --》API和服務(wù)
③.進(jìn)入憑據(jù)頁(yè)面,點(diǎn)擊創(chuàng)建憑據(jù)生成Auth2.0的憑據(jù)


④.在這里選擇web應(yīng)用,直接點(diǎn)擊創(chuàng)建
⑤.這時(shí)獲得了客戶端ID和客戶端密鑰


二. 在Google日歷上做成活動(dòng)
注:這里使用了google-api-php-client
①.開(kāi)發(fā)Google登錄授權(quán)功能
$client->setApplicationName(‘你的APP Name’)
$client->setClientId(‘Auth憑據(jù)的客戶端ID’);
$client->setClientSecret(‘Auth憑據(jù)的客戶端密鑰’);
$client->setRedirectUri(‘你的重定向URL’); //需要在Auth憑據(jù)的編輯頁(yè)面對(duì)該URL進(jìn)行授權(quán),否則URL會(huì)被拒絕

在這里配置的重定向URL必須是https,所以在開(kāi)發(fā)階段推薦使用內(nèi)網(wǎng)穿透工具來(lái)進(jìn)行測(cè)試
推薦內(nèi)網(wǎng)穿透工具:https://ngrok.com/
$client->setAccessType(); //此方法用來(lái)設(shè)置訪問(wèn)類(lèi)型,值:offline/online,如果設(shè)置為 offline,你的應(yīng)用程序?qū)@得一個(gè) refresh_token,在訪問(wèn)令牌過(guò)期后,用于獲取新的訪問(wèn)令牌。如果設(shè)置為 online,你的應(yīng)用程序只會(huì)獲得一個(gè)訪問(wèn)令牌,若訪問(wèn)令牌過(guò)期,需要用戶重新進(jìn)行授權(quán)。(默認(rèn)為online)
$client->setApprovalPrompt(); //此方法用來(lái)設(shè)置用戶授權(quán)提示類(lèi)型,值:force/auto,如果設(shè)置為force,在用戶嘗試授權(quán)之前,無(wú)論之前是否已經(jīng)授權(quán)過(guò),都會(huì)顯示授權(quán)提示頁(yè)面。如果設(shè)置為auto,在用戶嘗試授權(quán)之前,如果之前已經(jīng)授權(quán)過(guò)且授權(quán)未過(guò)期,就不會(huì)顯示授權(quán)提示頁(yè)面,直接返回訪問(wèn)令牌。(默認(rèn)為auto)
$client->addScope(); //此方法用來(lái)添加授權(quán)作用域,以此來(lái)指定你的應(yīng)用程序?qū)τ脩魯?shù)據(jù)的具體訪問(wèn)權(quán)限。
$client->createAuthUrl(); //若前面的數(shù)據(jù)設(shè)置正常,此方法會(huì)返回google進(jìn)行授權(quán)的URL,接收到此URL后進(jìn)行訪問(wèn)會(huì)跳轉(zhuǎn)到Google授權(quán)頁(yè)面。
②. 授權(quán)回調(diào)
用戶進(jìn)行授權(quán)后,若授權(quán)成功,會(huì)返回一個(gè)code,若未成功授權(quán),則不會(huì)有
若成功授權(quán),需使用google返回的code來(lái)?yè)Q取用戶的簽名
$accessToken = $client->fetchAccessTokenWithAuthCode(‘授權(quán)成功返回的code’); //此方法調(diào)用成功會(huì)返回授權(quán)用戶的簽名,此簽名的有效期限為1小時(shí),若過(guò)了有效期限后,此簽名會(huì)失效,無(wú)法再被使用。
若設(shè)置了$client->setAccessType(‘offline‘),接收到的用戶簽名中會(huì)攜帶一個(gè)refresh_token,在用戶的簽名過(guò)期后,可以用來(lái)?yè)Q取新的簽名,若有需要需要將refresh_token保存起來(lái)。
new GoogleCalendar($client); //創(chuàng)建google日歷的實(shí)例
$event = new Google_Service_Calendar_Event(array(...)); //作成google日歷的活動(dòng),接收的參數(shù)查看google calendar官方文檔。
=================================================================================
自己整理的可能會(huì)用到的參數(shù):
summary:標(biāo)題,若不填,會(huì)在日程上顯示(無(wú)標(biāo)題)
location:地址,若不填則不會(huì)顯示
description:詳細(xì)描述,若不填則不顯示
attachments:添加附件
attendees:活動(dòng)的參加者信息
colorId:活動(dòng)顏色
creator:活動(dòng)的創(chuàng)建者的信息
organizer:活動(dòng)組織者信息
=================================================================================
$event = $calendarService->events->insert(’primary‘, $event); //在google日歷上作成活動(dòng),作成成功會(huì)返回一系列參數(shù),包括活動(dòng)的ID,后續(xù)需要用來(lái)進(jìn)行刪除操作
三. 在Google日歷上刪除活動(dòng)
$client->setAccessToken('一開(kāi)始獲取到的用戶簽名信息')
$client->isAccessTokenExpired() //判斷用戶簽名是否過(guò)期
若用戶簽名已過(guò)期,使用$client->refreshToken(’初次授權(quán)的refresh_token‘);
使用以下代碼來(lái)獲得新的用戶簽名
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$newAccessToken = $client->getAccessToken();
$client->setAccessToken($newAccessToken); // 存儲(chǔ)新的用戶簽名
$calendarService = new GoogleCalendar($client); //創(chuàng)建google calendar實(shí)例
$calendarService->events->delete('primary', 日歷活動(dòng)的ID);