Microsoft Graph APIを使用して、Outlook/O365メールボックスにメッセージを照会しようとしています。 I アプリを登録 Azureポータルで、APIをクエリするために必要な情報を受け取りました。アプリにはMail.Read
許可。 (Azureポータルにアクセスできないため、このように設定されていると言われました。)OAuthエンドポイントからトークンを取得するとき、それは動作しません後続の呼び出し。現在、テストにPythonのリクエストモジュールを使用しています。
この呼び出しが失敗するのはなぜですか?正しい情報はすべて渡したようですが、明らかに何か不足しています。
POST
を実行してトークンを取得しています:
https://login.microsoftonline.com/my.domain/oauth2/token
必要なパラメーターを渡します。
data = {'grant_type': 'client_credentials', 'client_id': CLIENTID, 'client_secret': SECRET, 'resource': APPURI}
そして私はこのような応答を受け取ります:
{
'resource': 'APPURI',
'expires_in': '3599',
'ext_expires_in': '3600',
'access_token': 'TOKENHERE',
'expires_on': '1466179206',
'not_before': '1466175306',
'token_type': 'Bearer'
}
しかし、私はそのトークンを使用しようとしますが、私が呼び出すものでは機能しません。私はそれをヘッダーとして渡します:
h = {'Authorization': 'Bearer ' + TOKEN}
私はこのURLを呼んでいます:
url = 'https://graph.Microsoft.com/v1.0/users/[email protected]/messages'
具体的には、これを使用します。
r = requests.get(url, headers=h)
応答は401です。
{
'error': {
'innerError': {
'date': '2016-06-17T15:06:30',
'request-id': '[I assume this should be removed for privacy]'
},
'code': 'InvalidAuthenticationToken',
'message': 'Access token validation failure.'
}
}
ログインリクエストでは、リソースパラメータは https://graph.Microsoft.com である必要があります
V1エンドポイントから発行されたトークンは、MS GraphAPIを使用した少なくとも一部のリクエストには無効であるようです。
代わりに、https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
を呼び出して、v2エンドポイントからトークンを取得してみてください。
Oidc検出ドキュメントを使用している場合は、v2用のドキュメントがhttps://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration
にあります。
Client Credentials を使用していない限り、別のアカウントのメールボックスのメッセージにアクセスすることはできません。 [email protected]
が認証に使用したアカウントと同じであり、このアドレスがアカウントのuserPrincipalNameでもあることを確認してください。
/me
を使用して、メッセージを要求し、アカウントのuserPrincipalName
の決定をバイパスするために、簡略化されたURIを使用することもできます。この場合、GET
リクエストはhttps://graph.Microsoft.com/v1.0/me/messages
になります
Azure Portalからではなく、ここからアプリを登録する必要があると思います " https://apps.dev.Microsoft.com "。
MSのAzureドキュメントでリソースを一覧表示する必要性が指定されていない場合でも、リソースを一覧表示しないと作業を行えないことに注意してください。
例の「リソース」を実際に使用する、MSGraphの2本足の認証に固有の補足ドキュメントがあります。
https://developer.Microsoft.com/en-us/graph/docs/authorization/app_only
ハッピーハンティング!