【问题标题】:"Invalid legacy scope provided" error when attempting to access a Google API from web app?尝试从网络应用访问 Google API 时出现“提供的旧范围无效”错误?
【发布时间】:2019-07-02 00:56:15
【问题描述】:

这是我想要做的:

  • 从在线自动化服务(Zoho Flow,目的类似于 Zapier)远程执行 Google Apps 脚本功能。*
  • 我远程执行的这个功能是为组织中的每个人添加 gmail 标签。

为了做到这一点,我做了以下工作:

  1. 在与添加 gmail 标签的功能关联的同一 GCP 项目中创建了具有域范围委派的服务帐户。

  2. 使用 OAuth2 library for Google Apps 脚本在我的脚本中为该服务帐户永久保存 JWT 授权。

  3. 已验证该功能适用​​于 Google Apps 脚本中 Google 组织中的所有用户的服务帐户功能

  4. 将此脚本部署为 API 可执行文件以启用远程执行

  5. 使用 Apps Script API (https://mail.google.com/) 的邮件范围授权创建的 authtoken,以及我的脚本中 OAuth2 library 所需的附加范围。这是在 google developer playground 中使用 OAuth2.0 客户端 ID 凭据完成的,这些凭据被授权为同一 GCP 项目的一部分。

  6. 使用带有Postman的Google Apps Script API远程成功执行了函数

现在,为了真正使这个功能正式化,我现在必须用实际的客户端替换 postman 和 google 开发者控制台,这是用于 api 连接和流程自动化的 Zoho Flow 平台。

为了进行切换,我做了以下操作;

  1. 在用于 Google Developer Playground 的相同凭据下为客户端 (Zoho Flow) 添加了授权重定向 URL:

  1. 利用从这些凭据的 JSON 表示中找到的凭据** 在此软件中创建所谓的“连接”,这基本上是一个易于使用的 OAuth2.0 连接,具有良好的前端可用于访问 API 数据(这是我创建此连接的部分):

  2. 为此连接输入了在 google developer playground 中授权的相同范围,以及用于 Google Apps 脚本的 OAuth2.0 库使用的附加范围 (https://www.googleapis.com/auth/script.external_request):

瞧,我在尝试从 Web 应用程序访问 Google API 数据时收到以下错误,据说导致错误的范围是每个范围除了 用于邮件范围:https://mail.google.com/。我已经进行了额外的测试,以验证作为谷歌应用程序脚本 API 一部分的所有其他范围也会创建此错误,而不仅仅是 OAuth2 库的这个外部范围。

支持人员说这可能是我的凭据权限存在问题;我的逻辑是正确的吗?如果是,那么这是他们软件的问题,我会让他们进一步研究。

【问题讨论】:

  • 您要求什么范围?你的屏幕截图被剪短了。
  • 只是上面提到的两个,仅此而已。开发者控制台和 zoho flow 示例都是这种情况。
  • 范围的屏幕截图被截断,所以我实际上无法阅读第二个范围。
  • 您是否在Google Cloud Console 中创建了项目?这将允许您创建凭据并激活范围。 This article 有一个例子说明如何做到这一点。
  • 是的; Google Cloud Console 有一个项目,在 Google Developer Playground 和新客户端中都引用了该项目的凭据。

标签: json rest google-apps-script google-cloud-platform zoho


【解决方案1】:

已经对软件 (Zoho Flow) 进行了一些额外的测试,以确认它是否是软件错误:我不确定我的答案中定义的过程是否是最佳实践,甚至 100% 正确(其他用户可以与之交谈),但我已经确认我看到的错误可能是客户端的错误。

原因如下:

当授权多个范围时,我在问题末尾看到错误:

当更改该连接以仅使用我的一个范围时,如下所示:

连接正常进行,我可以成功地远程执行仅使用该范围的功能。这对我授权的任何一个范围都有效。唯一的问题是,脚本只需要一个作用域的情况很少见。虽然这我可以解决这个主要错误,但我无法远程执行将 gmail 标签添加到组织中所有用户的函数,因为它需要两个范围。这将向开发团队提及,并且应该很快就会修复。

【讨论】:

  • 我建议您使用Google Issue Tracker 打开一个错误,详细解释所有内容并使用您提供的屏幕截图。这似乎是一个应该解决的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2023-03-30
  • 2019-08-22
  • 2020-08-26
  • 1970-01-01
  • 2016-06-06
  • 2016-09-21
相关资源
最近更新 更多