2017-02-20 103 views
1

我试图从访问代码中获取访问令牌。但400错误的请求错误的错误Microsoft Access令牌请求错误 - 400错误请求

我使用这个链接来获得访问代码

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&response_type=code&redirect_uri=http://localhost/Home/About&scope=mail.read

在这个环节我收到的查询字符串中的代码返回URL 代码的响应= Mh12d04c8-8ea9-c82b-8cc5-b93cf913382c

我使用这个代码来获得访问令牌

https://login.microsoftonline.com/common/oauth2/v2.0/token?redirect_uri=http://localhost:51296/Home/AAA&client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=Rmi2PNLPNM5agLh5aT5G82W&code=Mh12d04c8-8ea9-c82b-8cc5-b93cf913382c&scope=mail.read

但它给400错误请求。请帮我解决这个问题。

+0

它通常会返回一个扩展的错误代码和错误消息。你可以检查是否是这种情况,并添加它们? 例如,当我单击login.microsoftonline.com链接时,错误页面右下角显示它们:“AADSTS90056:此端点只接受POST请求,收到GET请求”。 你的POST会得到不同的错误代码。 – RasmusW

+0

您的重定向uri在通话之间也不匹配。它需要匹配你在应用注册期间设置的内容 –

+0

@RasmusW不,我没有得到像这样的“AADSTS90056”这样的错误。我得到了错误的请求错误400.请帮助我。 –

回答

2

对于这种类型的问题,如@RasmusW建议的那样,您可以使用像Fiddler这样的工具来查找响应中的内部错误消息。正如@ Dan Kershaw指出的那样,您需要确保令牌请求中的回复地址url应该与授权代码请求中的回复地址相匹配。否则,您将收到错误:答复地址'xxxxx'与请求授权码时提供的答复地址'xxxx'不匹配。

根据您的要求,您正在使用带有v2.0端点的授权码流。您必须在令牌请求中添加“grant_type”参数,授权码流的值必须为“authorization_code”。如果内部错误消息是“AADSTS90014:请求主体必须包含以下参数:'grant_type”,请首先检查它。请点击here了解更多关于2.0版端点OAuth 2.0授权码流程的细节。

我可以用微软图形API个人Microsoft帐户

是.The 2.0端点允许开发人员编写接受登录来自微软帐户和Azure的AD帐户的应用程序,使用单一身份验证端点。

+0

谢谢@南钰 - MSFT。并请帮助我如何追踪小提琴手的错误? –

+0

您能否为我提供此代码示例? –

+0

关于如何使用Fiddler进行调试,您可以在互联网上获得很多教程,例如,这个教程:http://www.asjava.com/tools/fiddler-tutorial-how-to-use-fiddler/ 。有关如何使用Microsoft Graph API,您可以单击https://graph.microsoft.io/en-us/docs/authorization/auth_overview获取代码示例。 –