我試圖通過Google的服務帳戶身份驗證來驗證我的服務器應用程序,但由於某種原因,它只是沒有通過。Google OAuth2服務帳戶API授權
在API console中,我已經創建了項目,啓用了我需要的服務(Admin SDK),並創建了服務帳戶和Web應用程序API訪問。
當我使用的Web應用程序的訪問憑據,我能夠進行身份驗證並檢索用戶記錄。但使用服務帳戶身份驗證會不斷給我一個登錄所需的信息。
"error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Login Required" }
我忘了添加,我正在用PHP客戶端庫進行測試。
public function init() {
$client = new Google_Client();
if (isset($_SESSION['access_token'])) {
$client->setAccessToken($_SESSION['access_token']);
}
$key = file_get_contents(App::SERVICE_KEY_FILE);
$client->setAssertionCredentials(new Google_AssertionCredentials(
App::SERVICE_ACCOUNT_NAME,
App::SERVICE_API_SCOPES,
$key)
);
$client->setClientId(App::SERVICE_CLIENT_ID);
debug($client, 'CLIENT');
if ($client->getAccessToken()) {
$this->access_token = $_SESSION['access_token'] = $client->getAccessToken();
debug($_SESSION['access_token'], 'TOKEN');
} else {
debug('NO TOKEN');
}
$this->client = $client;
}
正如你看到的,代碼基本上是差不多的谷歌的例子。我錯過了一個額外的步驟?
最後一件事,當我使用驗證的Web應用程序,然後進入我的服務帳戶的腳本,服務帳戶腳本可以拿起web應用程序腳本的會議,並與用戶記錄檢索度過。這是否意味着Admin SDK API通過Web應用程序身份驗證明確需要用戶交互?