2014-04-06 204 views
4

我有使用Google PHP客戶端API使用雲端硬盤服務的PHP代碼。Google PHP客戶端API:權限不足

<?php 
require_once 'Google/Client.php'; 
require_once 'Google/Service/Drive.php'; 

const CLIENT_ID = '[MYCLIENTID]'; 
const SERVICE_ACCOUNT_NAME = '[MYSERVICEACCOUNID]'; 

// Make sure you keep your key.p12 file in a secure location, and isn't 
// readable by others. 
const KEY_FILE = './[MYPRIVATEKEY].p12'; 

// Load the key in PKCS 12 format (you need to download this from the 
// Google API Console when the service account was created. 
$client = new Google_Client(); 
$client->setApplicationName("Google Drive Sample"); 

$key = file_get_contents(KEY_FILE); 
$client->setClientId(CLIENT_ID); 
$client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array('https://www.googleapis.com/auth/drive'), 
    $key) 
); 

$client->setClientId(CLIENT_ID); 

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

// Get the json encoded access token. 
$token = $client->getAccessToken(); 

echo "<pre>"; 
$service = new Google_Service_Drive($client); 
$service->apps->listApps(); 
echo "</pre>"; 
?> 

我正確安裝了CLIENT_ID,SERVICE_ACCOUNT_NAME和KEY_FILE。當我運行代碼時,出現以下錯誤消息:

Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/drive/v2/apps: (403) Insufficient Permission' in C:\xampp\htdocs\oauth\Google\Http\REST.php:79 
Stack trace: 
#0 C:\xampp\htdocs\oauth\Google\Http\REST.php(44): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request)) 
#1 C:\xampp\htdocs\oauth\Google\Client.php(499): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) 
#2 C:\xampp\htdocs\oauth\Google\Service\Resource.php(195): Google_Client->execute(Object(Google_Http_Request)) 
#3 C:\xampp\htdocs\oauth\Google\Service\Drive.php(1281): Google_Service_Resource->call('list', Array, 'Google_Service_...') 
#4 C:\xampp\htdocs\oauth\drive_client.php(41): Google_Service_Drive_Apps_Resource->listApps() 
#5 {main} 
    thrown in C:\xampp\htdocs\oauth\Google\Http\REST.php on line 79 

代碼有什麼問題?

回答

6

apps#list方法需要授權範圍https://www.googleapis.com/auth/drive.apps.readonly。只需將其添加到示波器的數組:

$client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array('https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.apps.readonly'), 
    $key) 
); 
+0

哇哦,我不知道該範圍的真正:( 現在工作很完美!非常感謝Vinicius! – Dino

0

,也必須停用谷歌驅動API下蜜蜂&權威性您在開發者控制檯項目