首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么微软Oauth2 API会改变授权请求的范围?

为什么微软Oauth2 API会改变授权请求的范围?
EN

Stack Overflow用户
提问于 2017-01-23 15:54:26
回答 2查看 1.4K关注 0票数 2

我正在创建一个应用程序,它需要从Microsoft帐户请求用户授权。两次都被绊倒了。

首先,我只想阅读用户的电子邮件,所以我请求了以下范围:

  • User.Read
  • Mail.Read
  • Mail.ReadWrite
  • Mail.ReadWrite.Shared
  • Mail.Read.Shared

但是,我一直收到“范围已更改”错误,并注意到来自微软的授权响应自动将Mail.Send作用域包含到请求中,即使我没有请求它,授权网页上也没有它。

我的用户并不关心额外的auth,所以我只是在请求中添加了Mail.Send,然后继续前进。很好。

现在我被要求将offline_access包含到范围列表中,这样我就可以获得刷新令牌,并使应用程序在后台运行。但是,当我这样做时,微软给我的回复是一个缺少'offline_access‘授权的授权请求,即使授权页面显示了“访问您的数据脱机”,并且在身份验证过程中没有发生错误,但是我的Oauth2流被一个“范围已经更改”的错误打断:

代码语言:javascript
复制
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/作用域,也没有列出任何其他看似相关的范围。也许这意味着图表还不支持这个范围,尽管它已经被大量的文档化了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-26 07:20:32

我也觉得这个问题很烦人。如果您正在使用Python & oauthlib处理身份验证请求-

在Python3和requests_oauthlib库中,这会生成一个Warning,而不是Exception。如果您看到源代码,那么您将在oauthlib/oauth2/rfc6749/parameters.py中找到这些行

代码语言:javascript
复制
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,以忽略此警告。

票数 2
EN

Stack Overflow用户

发布于 2017-05-30 11:28:48

有文件/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/parameters.py

[1]

正如您在图像中看到的,有一个环境变量"OAUTHLIB_RELAX_TOKEN_SCOPE“。只需使用值“True”或1将其添加到您的环境中即可。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41810377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档