Microsoft帐户OpenID身份验证令牌请求返回id_token但不返回access_token

时间:2017-02-11 16:50:21

标签: oauth openid microsoft-graph

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-oauth-code

的文档中

...它表明对令牌请求的成功响应如下:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "token_type": "Bearer",
    "expires_in": 3599,
    "scope": "https%3A%2F%2Fgraph.microsoft.com%2Fmail.read",
    "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}

在身份验证的第一步完成后,我会在重定向上收到一个代码并使用它来请求令牌。

但是,我只收到这个:

{
    "token_type": "Bearer",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}

我的范围设置为openid email profile

为什么我没有收到access_token

1 个答案:

答案 0 :(得分:2)

只有在请求资源特定范围时才会返回访问令牌,以便它可以用于访问受保护资源。尝试使用“https://graph.microsoft.com/mail.read”这样的范围,如与问题一起发布的文档链接中的示例所示。