Возникла проблема с определением областей при попытке записи с помощью API электронных таблиц Google v4 в переполнении стека

Пожалуйста, кто-нибудь, помогите мне:

Я нашел эти области необходимо написать в электронной таблице Google на https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update

авторизация

Требуется одна из следующих областей OAuth:

  • https://www.googleapis.com/auth/drive
  • https://www.googleapis.com/auth/drive.file
  • https://www.googleapis.com/auth/spreadsheets
$client->setScopes(array(
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheet'
));

Я могу читать и получать данные из электронной таблицы. Но когда я пытаюсь что-то написать, он говорит: «У запроса недостаточно областей аутентификации».

Вот полная ошибка:

Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 403, "message": "Request had insufficient authentication scopes.", "errors": [ { "message": "Request had insufficient authentication scopes.", "domain": "global", "reason": "forbidden" } ], "status": "PERMISSION_DENIED" } } ' in /home/muthop5/public_html/sheet/vendor/google/apiclient/src/Google/Http/REST.php:118 Stack trace: #0 /home/muthop5/public_html/sheet/vendor/google/apiclient/src/Google/Http/REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 [internal function]: Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 /home/muthop5/public_html/sheet/vendor/google/apiclient/src/Google/Task/Runner.php(176): call_user_func_array(Array, Array) #3 /home/muthop5/public_html/sheet/vendor/google/apiclient/src/Google/Http/REST. in /home/muthop5/public_html/sheet/vendor/google/apiclient/src/Google/Http/REST.php on line 118

1

Решение

Возможно, вы захотите проверить и удалить ранее сохраненные учетные данные на ~/.credentials/drive-php-quickstart.json на основе PHP Быстрый старт:

define('APPLICATION_NAME', 'Google Sheets API PHP Quickstart');
define('CREDENTIALS_PATH', '~/.credentials/sheets.googleapis.com-php-quickstart.json');
define('CLIENT_SECRET_PATH', __DIR__ . '/client_secret.json');
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/sheets.googleapis.com-php-quickstart.json
define('SCOPES', implode(' ', array(
Google_Service_Sheets::SPREADSHEETS_READONLY)
));

Затем запустите приложение, чтобы получить новый набор учетных данных.

Надеюсь это поможет.

0

Другие решения

Чтобы добавить в таблицу, убедитесь, что область видимости не только для чтения, так как вы пишете в нее.
Обязательно установите запрос на утверждение, так как это также вызывает проблемы.

Google_Service_Sheets::SPREADSHEETS_READONLY)

Вместо этого используйте

$scope = array('https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive');
$client->addScope($scope);
$client->setIncludeGrantedScopes(true);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
0

По вопросам рекламы [email protected]