尝试从网络应用访问Google API时出现“提供了无效的旧范围”错误?

时间:2019-07-02 00:56:15

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

这就是我想要做的:

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

为此,我做了以下工作:

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

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

  3. 已验证该功能可与Google Apps脚本中的Google组织中的所有用户的服务帐户功能一起使用

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

  5. 已创建具有Apps脚本API(https://mail.google.com/)的邮件作用域以及我的脚本中OAuth2 library所需的其他作用域的授权令牌。这是在google developer playground中使用授权作为同一GCP项目一部分的OAuth2.0客户端ID凭据完成的。

  6. 使用Google Apps Script API和Postman

  7. 成功地远程执行了该功能

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

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

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

enter image description here

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

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

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

enter image description here

支持人员说我的凭据权限可能有问题;我的逻辑路线正确吗?如果是这样,那么我将要求他们进一步追求软件的问题。

1 个答案:

答案 0 :(得分:0)

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

这是原因:

当授权多个作用域时,我在问题末尾看到错误: enter image description here

将连接更改为仅使用我的一个示波器时,就像这样:

enter image description here

连接正常进行,我可以远程执行仅成功利用该作用域的函数。这确实适用于我授权的任何范围。唯一的问题是,脚本仅需要一个作用域的情况很少发生。尽管可以解决这个主要错误,但我无法远程执行向组织中的所有用户添加gmail标签的功能,因为它需要两个作用域。这将在开发团队中提及,应尽快解决。