2017-02-20 25 views
1

アクセスコードからアクセストークンを取得しようとしています。しかし、私は戻りURL コードで、私は、クエリ文字列内のコードを取得しています。このリンクの応答にアクセスコードにMicrosoft Access Token Request Error - 400 Bad Request

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

を取得するには、このリンクを使用しています

400不正な要求エラーのエラーがあります= 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"が含まれている必要がある場合、最初にチェックしてください。 v2.0エンドポイントのOAuth 2.0認証コードフローの詳細については、hereをクリックしてください。

私はMicrosoftグラフAPIと個人のMicrosoftアカウントを使用でき

はい【選択v2.0のエンドポイントが使用して、開発者はMicrosoftアカウントとのAzure ADアカウントの両方からのサインインを受け入れるアプリケーションを書くことができます単一の認証エンドポイント。

+0

ありがとう@Nan Yu - 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をクリックしてください。 –