Python Requests OAuth2Session() 如何传递多个作用域参数

4
我已成功使用"data_read"作为范围授权API连接,但是在将多个范围参数("data_read"和"data_write")传递到OAuth2Session()函数时遇到问题。
多个范围的参数需要作为URL字符串传递: https://api.website.com/oauth20/authorize?response_type=code&client_id=123456&redirect_uri=https...&scope=data_read&scope=data_write...
我尝试使用逗号分隔列表: scope=["data_read", "data_write"] 结果如下:

https://api.website.com/oauth20/authorize?response_type=code&client_id=123456&redirect_uri=https...&scope=data_read+data_write

我还尝试通过字典传递作用域列表:

dict_scope = {'scope':["data_read", "data_write"]}

这会导致一个错误:
ValueError: Invalid scope ({'scope': ['data_read', 'data_write']}), must be string, tuple, set, or list.

我已经在这里审查了请求文档:

http://docs.python-requests.org/en/master/user/quickstart/#passing-parameters-in-urls

这里:

http://requests-oauthlib.readthedocs.io/en/latest/api.html#oauth-2-0-session

这里有OAuth2的例子:

http://requests-oauthlib.readthedocs.io/en/latest/examples/examples.html#examples

任何想法或建议都将不胜感激。
1个回答

1

遇到了同样的问题。按照下面提到的方式传递由多个作用域参数组成的以空格分隔的字符串。

scope = "data_read data_write"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接