我希望使用OAuth2WebServerFlow()授权多个作用域。以下是我的当前代码:
flow = OAuth2WebServerFlow(
client_id=id,
client_secret=secret,
scope= ['scope1','scope2','scope3'],
approval_prompt='force',
access_type='offline')当我被重定向到谷歌授权屏幕时,该应用程序所要求的唯一权限就是“拥有离线访问”。此外,我在API控制台中打开了这些作用域。
发布于 2014-01-30 18:10:11
来自文档:
除了这些特定于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之前,它将字符串转换为空格分隔的参数。
我倾向于将oAuth用于apis (应用程序授权),而对用户oauth则不太使用,因此我忘记了我在自己的应用程序中也观察到了这一点。
如果您的作用域具有无效的授权,那么您将得到一个错误的授权。
不过,如果您要求获得正确的,那么大多数情况下它们都是合并的。
在下面的示例中,我询问有关'https://www.googleapis.com/auth/devstorage.read_write ' + 'https://www.googleapis.com/auth/prediction'的情况
但是,虽然我只被提示要离线访问。我的应用程序工作正常,权限是正确的。应用程序不具有更多权限(其他apis)。
https://stackoverflow.com/questions/21463869
复制相似问题