我正在爲此苦苦掙扎:我試圖使用服務帳戶從PHP腳本創建Google日曆中的事件。使用服務器帳戶和PHP對Google Calendar API進行身份驗證
這是我做了什麼:
- 創建一個谷歌雲項目
- 啓用日曆API
- 創建一個OAuth 2.0服務帳戶,與客戶端ID,郵箱地址和公共密鑰
- 下載的密鑰文件,並在我的網站保存在此
- 共享我的服務帳戶創建的電子郵件地址,日曆(以及管理共享權限)
這裏是我的代碼:
<?php
require_once 'google_api_src/Google_Client.php';
require_once 'google_api_src/contrib/Google_CalendarService.php';
const CLIENT_ID = 'xxxxxxxxxxxxx.apps.googleusercontent.com';
const SERVICE_ACCOUNT_NAME = '[email protected]';
// Make sure you keep your key.p12 file in a secure location, and isn't
// readable by others.
const KEY_FILE = 'google_api_src/xxxxxxxxx-privatekey.p12';
$client = new Google_Client();
$client->setApplicationName("Hall Booking");
session_start();
if (isset($_SESSION['token']))
{
$client->setAccessToken($_SESSION['token']);
}
// Load the key in PKCS 12 format
$key = file_get_contents(KEY_FILE);
$client->setClientId(CLIENT_ID);
$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/calendar', "https://www.googleapis.com/auth/calendar.readonly"),
$key));
$service = new Google_CalendarService($client);
//Save token in session
if ($client->getAccessToken())
{
$_SESSION['token'] = $client->getAccessToken();
}
?>
我已經是盡我所能調試的代碼,而是調用SetAssertionCredentials後的令牌始終設置爲null。沒有PHP錯誤。
任何想法是什麼錯誤,或如何進一步調試? 我是否必須對api src文件夾中的config.php進行任何更改(我還沒有到目前爲止)? 應用程序名稱是否重要?它用於什麼?
<您的日曆-ID-HERE> @ group.calendar.google.com 什麼是日曆ID? 我在日曆ID中傳遞了我的電子郵件ID,它不起作用。 請幫忙。 – Madurai
我已經通過視頻和幫助文件全面解釋了這一點。 http://amazewebs.com/go-premium –