2015-02-10 53 views
1

我想從這裏運行Google API PHP簡單查詢示例:https://github.com/google/google-api-php-client/blob/master/examples/service-account.php 我的目標是測試OAuth2並在我的web之間創建服務器到服務器的連接應用和已經分享給我的谷歌電子表格。Google API PHP簡單查詢示例權限不足

這裏就是我有:

$client_id = 'XXX.apps.googleusercontent.com'; //Client ID 
    $service_account_name = '[email protected]'; //Email Address 
    $key_file_location = 'C:/Users/Hp/Downloads/cMessage-638a8a247351.p12'; 
    if ($client_id == '' || !strlen($service_account_name) || !strlen($key_file_location)) { 
     echo missingServiceAccountDetailsWarning(); 
    } 
    $client = new Google_Client(); 
    $client->setApplicationName("cMessage"); 
    $service = new Google_Service_Books($client); 
    /*  * ********************************************** 
     If we have an access token, we can carry on. 
     Otherwise, we'll get one with the help of an 
     assertion credential. In other examples the list 
     of scopes was managed by the Client, but here 
     we have to list them manually. We also supply 
     the service account 
    * ********************************************** */ 
    if (isset($_SESSION['service_token'])) { 
     $client->setAccessToken($_SESSION['service_token']); 
    } 
    $key = file_get_contents($key_file_location); 
    $cred = new Google_Auth_AssertionCredentials(
      $service_account_name, array('https://www.googleapis.com/auth/books'), $key 
    ); 
    $client->setAssertionCredentials($cred); 
    if ($client->getAuth()->isAccessTokenExpired()) { 
     $client->getAuth()->refreshTokenWithAssertion($cred); 
    } 
    $_SESSION['service_token'] = $client->getAccessToken(); 
    /*  * ********************************************** 
     We're just going to make the same call as in the 
     simple query as an example. 
    * ********************************************** */ 
    $optParams = array('filter' => 'free-ebooks'); 
    $results = $service->volumes->listVolumes('Henry David Thoreau', $optParams); 
    echo "<h3>Results Of Call:</h3>"; 
    foreach ($results as $item) { 
     echo $item['volumeInfo']['title'], "<br /> \n"; 
    } 

我嘗試運行此,我得到這個:

錯誤調用get https://www.googleapis.com/books/v1/volumes?q=Henry+David+Thoreau&filter=free-ebooks:(403)沒有足夠的權限

我我雙重檢查了我的憑據,時區,並且在我的開發者控制檯中啓用了Google的Books API。

我不知道我還缺少什麼。請幫忙。謝謝。

回答

0

好吧,我把它工作了!以下是我遇到的情況:

在Google Developer's Console的API & AUTH >> API中,我必須打開幾個API和SDK。我不能肯定這使得雖然伎倆,但這裏是我已經打開了API和SDK:

聯繫SDK

的BigQuery API

圖書API

Debuglet控制器API

驅動API

硬碟SDK

谷歌Apps Marketplace中SDK

谷歌雲SQL

谷歌雲存儲

谷歌雲存儲API JSON

Google+的API