我想使用OAuth2WebServerFlow()授权多个范围。这是我目前的代码:
flow = OAuth2WebServerFlow(
client_id=id,
client_secret=secret,
scope= ['scope1','scope2','scope3'],
approval_prompt='force',
access_type='offline')
当我被重定向到Google授权屏幕时,该应用程序要求的唯一权限是“具有脱机访问权限”。此外,我在API控制台中打开了这些范围。
答案 0 :(得分:1)
除了这些特定于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)。