谷歌的oauth2范围有很大的潜力吗?

时间:2013-07-13 11:53:24

标签: google-authentication oauth2client

我正在寻找有关Google使用oauth范围的详细信息

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

  1. 我指定范围两次。一旦进入我的应用程序,然后再进入API 安慰。这两个范围的重要意义是什么 声明?
  2. 如果我删除范围,我的用户必须重新授权我的应用,或者是这样 只需要添加其他范围?
  3. 如果答案为2,是'我不能默默地删除范围',那就了 Google图书馆优雅地处理重新授权用户,或 我会失败403次吗?我已阅读How should an application add/remove scopes to an existing grant?,但接受的答案专门引用了添加范围,而我的问题则是删除范围。
  4. 我的应用程序中的不同模块可以请求不同的范围 API控制台中指定的超集?要解释一下,我的应用程序有3个 组件:访问Drive的Chrome扩展程序,使用的Web客户端 JS访问Drive和YouTube(在线模式)和服务器 访问Drive的组件(在离线模式下)..
  5. 我的应用可以。询问它被授予的范围?
  6. 一般问题,我确信我面临着与许多应用作者相同的困境。如果我增加功能(这是一件好事,因为它吸引用户),我还需要增加用户在我的应用程序中放置的权限/信任(这是一件坏事,因为它会排斥用户)。关于应用程序如何最好地处理这种利益冲突,是否有任何建议?

1 个答案:

答案 0 :(得分: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