Google API PHP简单查询示例权限不足

时间:2015-02-10 10:00:50

标签: php google-client

我正在尝试从此处运行Google API PHP简单查询示例:https://github.com/google/google-api-php-client/blob/master/examples/service-account.php 我的目标是测试OAuth2并在我的网络应用和已分享给我的Google电子表格之间创建服务器到服务器的连接。

这就是我所拥有的:

$client_id = 'XXX.apps.googleusercontent.com'; //Client ID
    $service_account_name = 'XXX@developer.gserviceaccount.com'; //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。

我不知道我还缺少什么。请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

好的,我让它上班了!以下是我所做的事情,如果有人遇到这个:

在Google Developer's Console中,在API&amp; AUTH&gt;&gt; API,我不得不打开几个API和SDK。我不太确定哪个是技巧,但这里是我打开的API和SDK:

Admin SDK

BigQuery API

Books API

Debuglet Controller API

Drive API

推动SDK

Google Apps Marketplace SDK

Google Cloud SQL

Google云端存储

Google云端存储JSON API

Google+ API