为输入参数“scope”提供的值无效。范围'https://graph.microsoft.com/user.readBasic.all'无效

为输入参数“scope”提供的值无效。范围'https://graph.microsoft.com/user.readBasic.all'无效,graph,openid,microsoft-graph-api,openid-connect,Graph,Openid,Microsoft Graph Api,Openid Connect,当我尝试使用MSAlive帐户获取Graph API的访问令牌时,收到“无效范围错误”。这种情况只发生在少数MSA帐户上,而不是所有帐户上 验证url为 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<app id>&redirect_uri=<call back url>&response_type=code+id_token&state=stat

当我尝试使用MSAlive帐户获取Graph API的访问令牌时,收到“无效范围错误”。这种情况只发生在少数MSA帐户上,而不是所有帐户上

验证url为

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<app id>&redirect_uri=<call back url>&response_type=code+id_token&state=state&nonce=c7a966a3-d63d-4348-8ab8-bd445b0e9bb1&response_mode=form_post&scope=openid+email+profile+https%3A%2F%2Fgraph.microsoft.com%2Fuser.readBasic.all

我不明白为什么它对少数帐户有效。

要了解您为什么会出现这种不一致的行为,我们需要查看您对令牌请求的错误响应。请用这些信息更新您的问题

同时,User.ReadBasic.All仅对工作或学校(即组织帐户)有效,不适用于MSA。此权限通常用于读取组织中其他用户的配置文件,因此在消费者场景中无效。这记录在这里:在备注的第一行。 您的应用程序请求与MSA一起使用此权限是否有原因


希望这能有所帮助,

您能提供通过网络传输的HTTP流量捕获吗?您能否确认每个帐户都有相关的电子邮件?来自:“只有当电子邮件地址与用户帐户关联时,电子邮件声明才会包含在令牌中,但情况并非总是如此。”Hi Dan,上面的主题是我们在尝试执行curl命令生成访问令牌时得到的错误响应。根据答案和错误,您请求的权限对消费者MSA用户无效。该权限仅与组织和Azure广告用户相关。同样,您请求此许可是否有原因?您打算调用哪个Microsoft Graph API?感谢您的回复,Dan,Scope params,我们正在询问openid+电子邮件+。为了获得id_令牌,我们需要OpeniD,我们正在从msgraphapi生成'/me'。因此,根据您的评论,权限仅与组织相关,我试图了解为什么这些范围权限不适用于MSA,以及为什么它突然停止工作之前它按预期工作。如果您所做的只是GET/me,为什么不使用opened+email+User.Read?我不知道为什么这会像你说的那样奏效。此外,即使支持它,也不能确定作用域名称是否区分大小写。作用域名称为User.ReadBasic.All。此外,对于Microsoft Graph权限,您不需要在作用域名称中指定Graph App URI作为前缀。为了进行更多的调查,我们需要完整的错误消息-这是一个请求客户机id和时间戳-它应该在HTTP响应头或完整的错误消息中。
POST /common/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 3d1ec75e-e0ec-4507-5b4c-fa59f0f71c31client_id=<app id>&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.readBasic.all&redirect_uri=<redirect url>&grant_type=authorization_code&client_secret=<app secret >&code=<code>