1

「訪問被拒絕」異常但我正在使用服務帳戶委託域安全性,以便通過Directory API和PHP客戶端從Google Apps for Education實例中提取用戶列表圖書館。雖然該帳戶有權訪問

我很確定我的服務帳戶具有所有正確的安全性,因爲它能夠使用API reference's「試用」功能來拉出列表。

所以,在這一點上,一切都朝着我的代碼的問題指向,但我似乎無法找出其中:

<?php 
require 'vendor/autoload.php'; 

$clientEmail = '<>@developer.gserviceaccount.com'; 
$privateKey = file_get_contents(__DIR__ . '/access.p12'); 
$scopes = array(
    'https://www.googleapis.com/auth/admin.directory.user.readonly', 
); 

$credentials = new Google_Auth_AssertionCredentials($clientEmail, $scopes, $privateKey); 
$credentials->sub = '[email protected]'; 

$client = new Google_Client(); 
$client->setAssertionCredentials($credentials); 

if ($client->getAuth()->isAccessTokenExpired()) 
{ 
    $client->getAuth()->refreshTokenWithAssertion(); 
} 

$directory = new Google_Service_Directory($client); 

$result = $directory->users->listUsers(array('domain' => 'my.domain')); 

var_dump($result); 

上面的代碼引發以下錯誤:

Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: ' in C:\wamp\www\quick\vendor\google\apiclient\src\Google\Auth\OAuth2.php on line 358 

Google_Auth_Exception: Error refreshing the OAuth2 token, message: '{ 
    "error" : "access_denied", 
    "error_description" : "Requested client not authorized." 
}' in C:\wamp\www\quick\vendor\google\apiclient\src\Google\Auth\OAuth2.php on line 358 

Call Stack: 
    0.0010  132792 1. {main}() C:\wamp\www\quick\index.php:0 
    0.0260 1060248 2. Google_Auth_OAuth2->refreshTokenWithAssertion() C:\wamp\www\quick\index.php:18 
    0.9230 1163560 3. Google_Auth_OAuth2->refreshTokenRequest() C:\wamp\www\quick\vendor\google\apiclient\src\Google\Auth\OAuth2.php:309 

回答

1

調用堆棧應該標識出現此錯誤的特定行。需要注意的是,在堆棧中的第二行,似乎點到線的腳本,其中代碼確實涉及到OAuth驗證的18:當您嘗試refreshTokenWithAssertion

$client->getAuth()->refreshTokenWithAssertion(); 

換句話說,谷歌表示,「ACCESS_DENIED因爲請求客戶未經授權「。如果你試圖確定腳本中的哪個位置出現錯誤,我認爲這應該回答你的問題。

如果你想弄清楚爲什麼得到一個錯誤,我會做一些谷歌搜索refreshTokenWithAssertion加上錯誤信息,看看你是否發現任何其他開發人員可以通過一個類似的問題的工作。例如,通過谷歌搜索,我發現this other page on SO可以幫助你。

祝你好運!

+1

謝謝。我感謝你的建設性。它打開了門。 –

+0

太棒了,很高興我能幫到你! –

相關問題