4

我正在寻找有关 google 使用 oauth 范围的一些深入的详细信息

我的云端硬盘应用程序正在运行,因此我可以简单地使用范围。但是我有以下详细的问题/问题..

  1. 我指定了两次范围。一次在我的应用程序中,然后也在 API 控制台中。这两个范围声明各自的意义是什么?
  2. 如果我删除范围,我的用户必须重新授权我的应用程序,还是仅在添加其他范围时才需要这样做?
  3. 如果 2 的答案是“我不能静默删除范围”,Google 库会优雅地处理重新授权用户,还是只会出现 403 失败?我已阅读应用程序应如何向现有授权添加/删除范围?但接受的答案特别提到添加范围,而我的问题是关于删除范围。
  4. 我的应用程序中的不同模块可以在 API 控制台中指定的超集中请求不同的范围吗?解释一下,我的应用程序有 3 个组件:访问 Drive 的 chrome 扩展、使用 JS 访问 Drive 和 YouTube(在线模式)的 Web 客户端,以及访问 Drive(离线模式)的服务器组件。
  5. 可以我的应用程序。询问它已被授予什么范围?

一个普遍的问题,我确信我面临与许多应用程序作者相同的困境。如果我增加功能(这是一件好事,因为它吸引了用户),我还需要增加权限/信任用户在我的应用程序中的位置(一件坏事,因为它排斥用户)。对于应用程序应如何最好地处理这种利益冲突,是否有任何建议?

4

1 回答 1

3

客户端代码中的范围列表- 这是用户授权您的应用执行的操作

当您向用户请求授权时,您需要指定您希望用户同意的内容。这就是范围列表的用途——它控制用户在授权您的应用程序时看到的文本,并且该授权授予的刷新/访问令牌仅限于进行这些范围允许的 API 调用。

API 控制台中启用的服务列表- 这是您的应用授权用户执行的操作

据我所知,API 控制台中没有指定范围列表。但是,有一个可以启用的 Google 服务列表。在这里启用/禁用服务更多的是关于打开/关闭进行 API 调用和管理配额和/或接受与该 API 相关的服务条款的能力,而不是授权。

进行 API 调用时- 您发送访问令牌

访问令牌封装了发出请求的用户、用户授权给您的范围以及用于授权的客户端 ID(这又属于您的项目)。此时,您需要在项目上启用发送 API 调用的服务,以及 API 请求的正确范围 - 否则您将收到 403。

当您的所需范围列表更改时- 您应该期望用户需要重新授权

在您请求访问令牌(通常通过发送刷新令牌)时,您需要为该请求不成功做好准备。也许是因为您添加了范围 - 但也许用户选择访问https://accounts.google.com/IssuedAuthSubTokens并撤销了您的应用程序访问权限。我不确定如果您请求的范围小于用户最初授予的范围是否会触发此问题,我会尝试测试 - 但重点是,无论您的代码需要能够处理这种情况。我相信 OAuth2DecoratorFromClientSecrets (来自链接的问题)会为您优雅地处理这个问题,但不确定 - 它应该很容易验证。

跨多个客户端使用相同的授权- 建议通读此文档,看看它是否涵盖了您的所有场景:https ://developers.google.com/accounts/docs/CrossClientAuth

要查看授予访问令牌的范围- 使用 OAuth2 API:https ://www.googleapis.com/oauth2/v1/tokeninfo?access_token=yaxxxxxxxxxxxxxxx

于 2013-07-19T23:03:40.697 回答