您需要做的第一件事是获取访问令牌。这将需要一个人。假设您使用的是Google APIs PHP Client,则可以使用此脚本完成(从命令行运行)。
注意:下面的代码片段适用于已安装应用程序的客户端 ID。确保在 Google API 访问控制台中创建此类型的客户端 ID。
require_once '../../src/apiClient.php';
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
$client = new apiClient();
// Visit https://code.google.com/apis/console to create your client id and cient secret
$client->setClientId('INSERT_CLIENT_ID');
$client->setClientSecret('INSERT_CLIENT_SECRET');
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
$client->setScopes(array(
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.readonly',
));
$authUrl = $client->createAuthUrl();
print "Please visit:\n$authUrl\n\n";
print "Please enter the auth code:\n";
$authCode = trim(fgets(STDIN));
$_GET['code'] = $authCode;
$token = $client->authenticate();
var_dump($token);
这将为您提供一个包含您的 accessToken 和 refreshToken 的 json 编码字符串。accessToken 会在 1 小时后过期,但不用担心。refreshToken 不会过期(除非您卸载应用程序),并且可以用来获取新的 refreshToken。客户端库负责这部分。
接下来,将完整的 json 字符串令牌(不仅是 access_token 属性保存在安全的地方,并确保其他人无法读取它。然后,您的应用程序可以调用$client->setAccessToken($token)
从安全位置查找 $token 的位置(同样,$token
是完整的 json 编码字符串,不限于其access_token
属性)。
现在,您可以向日历 API发出经过身份验证的请求!
require_once '../../src/apiClient.php';
require_once '../../src/contrib/apiCalendarService.php';
session_start();
$client = new apiClient();
$client->setApplicationName("Google Calendar PHP Sample Application");
$cal = new apiCalendarService($client);
$client->setAccessToken($tokenFromSafePlace);
$calList = $cal->calendarList->listCalendarList();
print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";