【问题标题】:Calling Google Service from Apps Script with oAuth使用 oAuth 从 Apps 脚本调用 Google 服务
【发布时间】:2015-10-01 05:19:38
【问题描述】:

我试图在这里运行 Google Apps 脚本的示例脚本: https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/GoogleServiceAccount.gs

我相信我从从 Google Developer Console 下载的 JSON 文件中正确设置了 PRIVATE_KEY、CLIENT_EMAIL 和 USER_EMAIL。我还在项目上启用了 Google Drive API。但我仍然在“错误:invalid_client\n no application name”对话框中收到错误。

我应该添加/更改任何代码以正确运行此示例脚本吗?

【问题讨论】:

  • PRIVATE_KEY,你是从json获取的服务账户凭证中得到的吗?您使用的是 Google for Work 帐户吗?
  • 是的,我使用的是 Google for Work 帐户。我相信我们的域管理员会给予许可。我从 JSON 文件中获得了私钥。
  • 这些是项目凭据,域管理员必须授予对该应用程序的访问权限,以便它可以访问域信息。在这种情况下,用户冒充。检查我在回答中提到的内容是否已由管理员完成。
  • 非常感谢,杰拉尔多。由于我联系域管理员并不容易,因此我已将脚本移至 gmail 帐户。 (而且我在我的 Gmail 帐户上获得了脚本的新凭据)。但我仍然得到同样的错误。好像我犯了一个基本的错误。 USER_EMAIL 只是 gmail 地址,例如 honey@gmail.com ?
  • 是的,它不适用于 gmail 帐户。模拟用户仅适用于域下的帐户。例如。用户@mydomain.com。这只有在域管理员将这些权限授予域后才会起作用。这可以通过从 Marketplace 安装应用程序或按照我在答案中提供的步骤来完成。您必须联系您的管理员并要求安装该应用程序,否则您将无法测试该应用程序。

标签: google-apps-script


【解决方案1】:

如果您使用正确的设置(PRIVATE_KEY、CLIENT_EMAIL 和有效的 USER_EMAIL),该错误也可能与域管理员授予应用程序的权限有关。

由于此示例使用域范围的授权来模拟来自 USER_EMAIL 的帐户,因此域管理员首先必须授予应用程序执行此类操作的权限。

要向应用授予此权限,您可以通过以下方式进行:您的管理控制台 -> 安全 -> 高级设置 -> 管理 API 客户端访问

您将在“客户名称”字段中添加服务帐户 CLIENT_ID,并在第二个字段中添加以逗号分隔的项目范围。这些范围应与应用程序使用的范围相匹配。在这种情况下,id Drive 范围和您可能正在使用的任何其他范围。

单击“授权”按钮,如果一切顺利,您将能够使用该项目模拟您域中的用户。

这里是相关的documentation。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多