我正在创建一个应用程序,它需要从Microsoft帐户请求用户授权。两次都被绊倒了。
首先,我只想阅读用户的电子邮件,所以我请求了以下范围:
但是,我一直收到“范围已更改”错误,并注意到来自微软的授权响应自动将Mail.Send作用域包含到请求中,即使我没有请求它,授权网页上也没有它。
我的用户并不关心额外的auth,所以我只是在请求中添加了Mail.Send,然后继续前进。很好。
现在我被要求将offline_access包含到范围列表中,这样我就可以获得刷新令牌,并使应用程序在后台运行。但是,当我这样做时,微软给我的回复是一个缺少'offline_access‘授权的授权请求,即使授权页面显示了“访问您的数据脱机”,并且在身份验证过程中没有发生错误,但是我的Oauth2流被一个“范围已经更改”的错误打断:
Scope has changed from "mail.readwrite mail.read.shared mail.read
mail.readwrite.shared mail.send offline_access user.read" to "mail.readwrite
mail.read.shared mail.read mail.readwrite.shared mail.send user.read"那么,这是Microsoft Oauth flow中的一个bug,还是我做错了什么?
'offline_access‘编辑:我查看了https://apps.dev.microsoft.com/上的应用程序权限,其中没有列出https://apps.dev.microsoft.com/作用域,也没有列出任何其他看似相关的范围。也许这意味着图表还不支持这个范围,尽管它已经被大量的文档化了?
发布于 2017-10-26 07:20:32
我也觉得这个问题很烦人。如果您正在使用Python & oauthlib处理身份验证请求-
在Python3和requests_oauthlib库中,这会生成一个Warning,而不是Exception。如果您看到源代码,那么您将在oauthlib/oauth2/rfc6749/parameters.py中找到这些行
if not os.environ.get('OAUTHLIB_RELAX_TOKEN_SCOPE', None):
w = Warning(message)
w.token = params
w.old_scope = params.old_scopes
w.new_scope = params.scopes
raise w因此,您所要做的就是在您的环境中将OAUTHLIB_RELAX_TOKEN_SCOPE变量设置为True,以忽略此警告。
发布于 2017-05-30 11:28:48
有文件/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/parameters.py。
[1]
正如您在图像中看到的,有一个环境变量"OAUTHLIB_RELAX_TOKEN_SCOPE“。只需使用值“True”或1将其添加到您的环境中即可。
https://stackoverflow.com/questions/41810377
复制相似问题