PHP Google Sheets API - 权限被拒绝

标签 php google-api google-api-php-client permission-denied google-sheets-api

您好,我刚开始学习 PHP,我正在尝试使用 Google 表格 API。

我以为我按照他们的指示进行操作,我可以很好地调用和编辑工作表数据,但仅限于公共(public)访问。

当我将访问状态更改为私有(private)或群组时,我会遇到以下消息。

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message '{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "errors": [
      {
        "message": "The caller does not have permission",
        "domain": "global",
        "reason": "forbidden"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}

我会把我的代码放在你认为有用的地方。

<?php
require_once __DIR__ . '/vendor/autoload.php';

define('APPLICATION_NAME', 'Google Sheets API PHP Quickstart');
define('CREDENTIALS_PATH', __DIR__ . '/service-account-credentials.json');
define('CLIENT_SECRET_PATH', __DIR__ . '/client_secret.json');
define('SCOPES', implode(' ', array(
        Google_Service_Sheets::SPREADSHEETS)
));

putenv('GOOGLE_APPLICATION_CREDENTIALS='.CREDENTIALS_PATH);

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Drive::DRIVE);

$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);

$tokenArray = $client->fetchAccessTokenWithAssertion();
$accessToken = $tokenArray["access_token"];

$service = new Google_Service_Sheets($client);

$spreadsheetId = "1qe7QwyYxWuIAYT7UUZ2s3KdDZrAHJ02uPH4VPrr-pMk";

$range = "Sheet1";
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (count($values) == 0) {
    print "No data found.\n";
}
print_r($values);

代码中有什么需要确认的吗?还是谷歌 API 控制台?

如有任何信息,我们将不胜感激!提前致谢!

最佳答案

文件->共享->高级并添加服务账号

例如:your@email.iam.gserviceaccount.com

关于PHP Google Sheets API - 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39330695/

相关文章:

php - 在 Php 中使用德语变音符号创建目录

javascript - 使用 jQuery/Ajax 通过下拉菜单过滤 PHP SELECT 查询

php - 如何在没有js代码的情况下显示json结果数组

c# - 请求的身份验证范围不足。 [403]。谷歌人员API

php - 使用服务帐户 key 和 php 更新 Google 工作表

javascript Canvas 标签和stroketext方法

ruby - 在 G Suite 中更新用户照片

google-api - 如何将 Google OAuth 同意屏幕配置为不显示复选框?

php - Google Auth token 过期并且无法使用 PHP API Auth 客户端刷新?

php - 谷歌 oAuth : redirect_uri_mismatch