1

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

这就是我所拥有的:

$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。

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

4

1 回答 1

0

好的,我得到它的工作!如果有人遇到这种情况,这是我所做的:

在 Google Developer's Console 中,在 APIs & AUTH >> APIs 下,我必须打开一些 API 和 SDK。虽然我不太确定是哪一个成功了,但这里是我打开的 API 和 SDK:

管理 SDK

BigQuery API

图书 API

调试控制器 API

驱动 API

云端硬盘 SDK

Google Apps Marketplace SDK

谷歌云 SQL

谷歌云存储

谷歌云存储 JSON API

谷歌+ API

于 2015-02-11T12:41:12.663 回答