【问题标题】:Google API Insufficient Permissions listing filesGoogle API 权限不足列表文件
【发布时间】:2015-01-03 21:14:56
【问题描述】:

我正在尝试创建一个应用程序(使用云端硬盘服务帐户)列出给定文件夹中的文件并允许用户搜索这些文件的内容。我收到了一个无法解释的403 Insufficient Permissions 错误。

我已经编辑了Google API PHP Client Example中的代码:

$client_id = '[REMOVED]'; //Client ID
$service_account_name = '[REMOVED]'; //Email Address
$key_file_location = 'key.p12'; //key.p12

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
service = new Google_Service_Drive($client);

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/drive',
        'https://www.googleapis.com/auth/drive.file'
    ),
    $key
);

$client->setAssertionCredentials($cred);

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

$_SESSION['service_token'] = $client->getAccessToken();

$result = array();
$pageToken = NULL;

do {
    try {
        $parameters = array();
        if ($pageToken) {
            $parameters['pageToken'] = $pageToken;
        }

        $files = $service->files->listFiles($parameters);

        $result = array_merge($result, $files->getItems());

        $pageToken = $files->getNextPageToken();
    } catch (Exception $e) {
        echo "<br/>An error occurred: " . $e->getMessage();
        $pageToken = NULL;
    }
} while ($pageToken);

echo "<pre>";
print_r($result);
echo "</pre>";

echo "<br />Execution completed.";

确切的错误消息(上面catch 中的$e-&gt;getMessage())是Error calling GET https://www.googleapis.com/drive/v2/files: (403) Insufficient Permission - 我认为 /drive 和 /drive.file 范围给了我所需的所有权限?

【问题讨论】:

标签: php google-api google-drive-api google-api-php-client


【解决方案1】:

首先,快速说明:您同时请求Drive 范围和Drive.File 范围。后者是前者的子集,因此无需请求。您应该删除 'https://www.googleapis.com/auth/drive.file' 行。

权限不足,可能是开发者控制台配置不正确。您应该仔细检查是否为该特定项目启用了 API 和 SDK。

【讨论】:

    【解决方案2】:

    我有同样的问题。我在 Google Developer Console 中创建了一个新密钥并重新进行了身份验证。这解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2014-05-18
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多