2013-07-13 29 views
4

我正在寻找一些深跌的详细信息,对谷歌的使用OAuth范围有没有深入了解谷歌的oauth2范围?

我的云端应用的是工作,所以我得到了简单的使用范围的。不过,我有以下详细问题/问题。

  1. 我指定了两次作用域。一旦进入我的应用程序,然后在API 控制台。这两个范围 声明的相应意义是什么?
  2. 如果我删除范围,我的用户是否必须重新授权我的应用程序,或者仅在添加其他范围时才需要此 ?
  3. 如果对2的回答是'我不能默认删除范围',那么 Google库会优雅地处理重新授权用户,或者 我会得到403失败?我已阅读How should an application add/remove scopes to an existing grant?,但接受的答案明确提及添加范围,而我的问题是关于删除范围。
  4. 我的应用程序中的不同模块可以在API控制台中指定的超集中请求 范围内的不同范围吗?为了解释,我的应用程序有3 组件:访问Drive的Chrome扩展,使用 JS访问Drive和YouTube(在线模式)的Web客户端,以及访问Drive(离线模式)的服务器 组件。
  5. 可以我的应用程序。询问它授予的范围是什么?

一个普遍的问题,我敢肯定,我面临着许多应用程序作者一样的困境。如果我增加功能(这是一件好事,因为它吸引了用户),我还需要增加用户对我的应用程序的权限/信任(因为它会排斥用户,这是一件坏事)。有关应用程序如何最好地处理这种利益冲突的建议吗?

回答

3

在客户端代码范围的名单 - 这是一个用户授权您的应用程序做

当您从一个用户请求授权,你需要指定你想什么,用户同意。这是范围列表的用途 - 它控制用户在授权您的应用程序时看到的文本,并且该授权授予的刷新/访问令牌仅限于进行这些范围允许的API调用。的API控制台在启用服务

名单 - 这就是你的应用程序授权用户做

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

当一个API调用时 - 你沿着一个访问令牌发送

访问令牌封装发出请求,用户授权您为范围的用户,并用于授权委托人身份证(而这又属于你的项目)。此时,您需要将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

+0

许多thx为响应。 On“据我所知,没有在API控制台中指定的范围列表”如果您查看https://code.google.com/apis/console/?pli=1#project:9999999999999:drive_sdk,您将看到字段“其他范围。为希望您的应用程序访问的任何Google API输入OAuth 2.0范围网址”。这让我感到困惑。 – pinoyyid

+0

不幸的是,您的建议“我不确定是否您要求的范围小于用户最初授予的范围,会触发此操作,我会尝试进行测试”无济于事。问题是,除非Google的行为得到记录和确认,否则它可能会意外更改,最终可能会破坏我的应用。 – pinoyyid

+0

关于范围列表,这看起来特定于Drive SDK,并且看起来是Drive与代表您的应用程序请求的范围列表,请参阅http://stackoverflow.com/questions/12763128/什么是驱动器启动授权关于行为时,请求较少的范围 - 我试图做的一点是,你需要能够处理需要得到一个新的授权*无论如何*(因为用户可以撤销您的应用程序通过他们的帐户页面访问) - 所以不管行为如何,这不应该是您的应用程序的新失败案例。 – aeijdenberg