Как ограничить конкретный пользователь Google может читать / писать лист Google? - PullRequest
0 голосов
/ 15 июня 2019

У меня есть лист Google, я выполняю шаг быстрого запуска PHP (https://developers.google.com/sheets/api/quickstart/php)), чтобы кодировать скрипт PHP для чтения / записи листа Google. Я не знаю, как управлять разрешением на чтение / запись.

Вот код PHP-скрипта

$client = new Google_Client();
$client->setApplicationName('SurveyApp');
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
$spreadsheetId = '<my sheet id>';
$options = array('valueInputOption' => 'RAW');
$updateRange = "FormRange!F1:F3";
$requestBody = new Google_Service_Sheets_ValueRange();
$requestBody->setValues([["Blue"],["Green"],["Red"]]);
$response = $service->spreadsheets_values->update($spreadsheetId, $updateRange, $requestBody, $options);

У меня есть 3 аккаунта Google, например GooA, GooB и GooC. Существует Google Sheet, пользователь GooA является владельцем этого листа.

Я сознательно не делюсь листом с кем-либо, имеющим права на чтение / запись. Я пытаюсь удалить token.json с сервера и перестроить его с помощью учетной записи GooB и вставить код подтверждения.

Я получаю сообщение об ошибке 500 при выполнении сценария PHP всеми пользователями, включая владельца GooA. Я разделяю лист для пользователя GooC с разрешением , который может редактировать , ошибка 500 все еще существует, пока я не предоставлю доступ к листу в GooB с разрешением для редактирования . Я прочитал журнал и обнаружил, что ошибка 500 связана с проблемой разрешения.

После того, как я поделюсь листом для пользователя, GooB, который генерирует проверочный код с , может редактировать разрешение , все пользователи, включая анонимных (без входа в систему с учетной записью Google), могут выполнить скрипт PHP без ошибок.

В сценарии PHP есть код для записи / получения значений на листе, как я могу предоставить конкретному пользователю возможность выполнить сценарий?

С уважением,

Кельвин.

1 Ответ

0 голосов
/ 17 июня 2019

Вы можете прочитать из этой документации о том, как авторизовать запросы . Когда ваше приложение запрашивает личные данные, запрос должен быть авторизован аутентифицированным пользователем, который имеет доступ к этим данным.

Существует два способа идентифицировать ваше приложение:

  • с использованием токена OAuth 2.0 (который также авторизует запрос)
  • и / или с помощью API-ключа приложения . Вот как определить, какие из этих опций использовать:

Вот еще один способ установить тип разрешения для пользователей. Для получения более подробной информации см. ТАК .

...