如何限制特定的Google用户可以读取/写入Google工作表?

时间:2019-06-15 16:29:14

标签: php google-sheets permissions google-sheets-api

我有一个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表格,用户GooA是该表格的所有者。

我故意不与拥有读/写访问权限的任何人共享工作表。我尝试从服务器中删除token.json并使用帐户GooB登录名对其进行重建,然后粘贴验证码。

当所有用户(包括所有者GooA)执行PHP脚本时,都会出现错误500。我将工作表共享给具有可以编辑权限的用户GooC,在我将工作表共享给具有可以编辑权限的GooB之前,错误500仍然存在。我阅读了日志,发现Error 500与权限问题有关。

一旦我将表单共享给具有可以编辑权限的生成验证码的用户GooB,包括匿名用户在内的所有用户(无需使用Google帐户登录)都可以执行PHP脚本而不会出现错误。

在PHP脚本中,它具有向工作表写入/获取值的代码,如何授予特定用户执行脚本的权限?

最诚挚的问候,

开尔文。

1 个答案:

答案 0 :(得分:0)

您可以从本文档中了解如何Authorize Requests。当您的应用程序请求私人数据时,该请求必须由有权访问该数据的经过身份验证的用户授权。

有两种方法可以识别您的应用程序:

  • 使用OAuth 2.0令牌(也可以授权请求)
  • 和/或使用应用程序的API key。确定如何使用这些选项的方法如下:

这也是设置用户权限类型的另一种方法,请检查此SO post以获取更多详细信息。