使用OAuth2WebServerFlow的多个范围

时间:2014-01-30 17:50:26

标签: python google-app-engine

我想使用OAuth2WebServerFlow()授权多个范围。这是我目前的代码:

flow = OAuth2WebServerFlow(
    client_id=id,
    client_secret=secret,
    scope= ['scope1','scope2','scope3'],
    approval_prompt='force',
    access_type='offline')

当我被重定向到Google授权屏幕时,该应用程序要求的唯一权限是“具有脱机访问权限”。此外,我在API控制台中打开了这些范围。

1 个答案:

答案 0 :(得分:1)

来自documentation

  

除了这些特定于OpenID的范围之外,您的范围参数还可以   还包括其他范围字符串。所有范围字符串必须是   用空格分开。例如,如果您希望每个文件访问一个   用户的Google云端硬盘,您的范围可能是openid个人资料电子邮件   https://www.googleapis.com/auth/drive.file

所以在你的情况下:

scope= 'scope1 ' + 'scope2 ' + 'scope3'

示例:

scope = ('https://www.googleapis.com/auth/devstorage.read_write ' +
         'https://www.googleapis.com/auth/prediction')

修改

正如@Greg所说:

  

OAuth2WebServerFlow采用字符串或可迭代的字符串,   它在构造之前变成空间分离的参数   auth-URL。

我倾向于使用oAuth作为apis(应用程序授权)而不是用户oauth,所以我忘记了我在自己的应用程序中也观察到了这一点。

如果您的范围有无效授予,那么您将收到有关错误授权的错误。

虽然如果你要求正确授予大部分时间它们被合并。

在以下示例中,我询问'https://www.googleapis.com/auth/devstorage.read_write ' + 'https://www.googleapis.com/auth/prediction'

但是我只是提示离线访问。 我的应用程序工作正常,权限是正确的。 应用程序拥有更多权限(其他apis)。