Azure AD 令牌端点没有 return 一个 access_token(只有一个 id_token 和一个 refresh_token)

Azure AD token endpoint doesn't return an access_token (just an id_token and a refresh_token)

我在基于 Xamarin Forms 的移动应用程序中使用 Xamarin.Auth 针对 Google 和 Azure AD 对用户进行身份验证。虽然 Google 一切正常,但我无法通过 Azure AD 获得 access_token:

我可以在 Postman 中重播这个场景,所以这似乎不是由 Xamarin.Auth 引起的,更有可能是我无法正确解释 Microsoft 的文档...

非常感谢您的帮助!

在 Azure AD V2.0 中获取令牌时应包括资源范围。与 Azure AD 集成的任何 Web 托管资源都有一个资源标识符或应用程序 ID URI。例如,Microsoft Graph 是 https://graph.microsoft.com.

如果您想获取 microsoft graph 的访问令牌,并有权阅读登录用户的邮件,则令牌请求为:

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh    // NOTE: Only required for web apps

请阅读 this document for how OAuth 2.0 Authorization Code Flow works in Azure AD V2.0 .And click here 以了解 Azure Active Directory v2.0 端点中的范围、权限和许可