1

メールを取得してアプリケーションで処理するために、Office 365 メールボックスにアクセスするバックグラウンド サービスを構築しています。処理が完了すると、メールは削除されます。

X509 証明書を使用して OAuth アクセス トークンを取得する Web サービスの認証を正常にセットアップし (このブログ投稿のおかげで)、HTTP Get to でユーザーのメールを読み取ることができます。

これにより、メッセージング オブジェクトの目的の JSON 応答が返されます。

処理が完了したメールを削除したいので、次の 2 つの方法を試しました。

HTTP DELETE: https://outlook.office365.com/api/v2.0/users('[emailAddress]')/messages/[messageId]

と:

HTTP POST: https://outlook.office365.com/api/v2.0/users('[emailAddress]')/messages/[messageId]/move

含む:

_request.Content = New StringContent("{""DestinationId"": ""DeletedItems""}", Encoding.utf8, "application/json")

私はもともと Azure AD でアプリケーションをセットアップし、Office 365 Exchange Online を含む他のアプリケーションへのアクセス許可と、メールを読むためだけのアプリケーション アクセス許可と委任されたアクセス許可 (ここでは適用されません) の両方を持っていました。この時点で、http get リクエストからのメールの読み取りは正常に機能しました。

次に、完了したメッセージを削除する新しいメソッドをバックグラウンド サービスに追加しようとしました。上記で定義したように、削除または削除済みアイテムへの移動を実行すると、次のメッセージを含む 403 を受け取りました。

x-ms-diagnostics: 2000008;reason="The token contains not enough scope to make this call.";error_category="invalid_grant"

戻って、アプリケーションと委任の両方に読み取り/書き込み権限を追加しましたが、リクエストを送信しても何も変わりませんでした。

実験として、Office 365 のすべてのアクセス許可を Azure AD のアプリケーションから削除しました。予想通り、これにより、以前は機能していた電子メールを取得できなくなりました。これは、アプリケーションに正常に接続していることを証明しています。

ただし、アクセス許可を再度追加したところ、すべてのリクエストに対して次のように 401 が返されました。

  x-ms-diagnostics: 2000008;reason="The token contains no permissions, or permissions can not be understood.";error_category="invalid_grant"

その後、Azure AD のアプリケーションから Office 365 を削除して再度追加しようとしましたが、問題を解決できません。

アクセス許可の追加/更新に遅延はありますか?

電子メールの取得と削除および/または移動の両方ができるようにアプリケーションを修正するにはどうすればよいですか?

削除に問題があったときの完全な応答は次のとおりです。

StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  request-id: 9734281b-60f6-48e0-bea4-a3ce0c8b9744
  client-request-id: 1f7ee398-340e-45c4-985a-e89a34d3a4d9
  client-request-id: 1f7ee398-340e-45c4-985a-e89a34d3a4d9
  X-CalculatedBETarget: HE1PR04MB0971.eurprd04.prod.outlook.com
  X-BackEndHttpStatus: 403
  Cache-Control: private
  Set-Cookie: ClientId=XFUHAPKC3UISCO9J0WCOG; expires=Thu, 12-Jan-2017 13:30:18 GMT; path=/; secure; HttpOnly
  Set-Cookie: exchangecookie=ed0bfaa0c16e44ffac392df7da2dacd3; expires=Fri, 13-Jan-2017 13:30:18 GMT; path=/; HttpOnly
  Set-Cookie: ClientId=XFUHAPKC3UISCO9J0WCOG; expires=Thu, 12-Jan-2017 13:30:18 GMT; path=/; secure; HttpOnly
  Server: Microsoft-IIS/8.0
  WWW-Authenticate: Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="00000001-0000-0000-c000-000000000000@*", token_types="app_asserted_user_v1 service_asserted_app_v1", error="invalid_token"
  x-ms-diagnostics: 2000008;reason="The token contains not enough scope to make this call.";error_category="invalid_grant"
  OData-Version: 4.0
  X-AspNet-Version: 4.0.30319
  X-DiagInfo: HE1PR04MB0971
  X-BEServer: HE1PR04MB0971
  X-Powered-By: ASP.NET
  Date: Wed, 13 Jan 2016 13:30:18 GMT
  Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8
}

現在のアクセス許可の問題に対する完全な対応は次のとおりです。

StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  request-id: 9734281b-60f6-48e0-bea4-a3ce0c8b9744
  client-request-id: 1f7ee398-340e-45c4-985a-e89a34d3a4d9
  client-request-id: 1f7ee398-340e-45c4-985a-e89a34d3a4d9
  X-CalculatedBETarget: HE1PR04MB0971.eurprd04.prod.outlook.com
  X-BackEndHttpStatus: 403
  Cache-Control: private
  Set-Cookie: ClientId=XFUHAPKC3UISCO9J0WCOG; expires=Thu, 12-Jan-2017 13:30:18 GMT; path=/; secure; HttpOnly
  Set-Cookie: exchangecookie=ed0bfaa0c16e44ffac392df7da2dacd3; expires=Fri, 13-Jan-2017 13:30:18 GMT; path=/; HttpOnly
  Set-Cookie: ClientId=XFUHAPKC3UISCO9J0WCOG; expires=Thu, 12-Jan-2017 13:30:18 GMT; path=/; secure; HttpOnly
  Server: Microsoft-IIS/8.0
  WWW-Authenticate: Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="00000001-0000-0000-c000-000000000000@*", token_types="app_asserted_user_v1 service_asserted_app_v1", error="invalid_token"
  x-ms-diagnostics: 2000008;reason="The token contains not enough scope to make this call.";error_category="invalid_grant"
  OData-Version: 4.0
  X-AspNet-Version: 4.0.30319
  X-DiagInfo: HE1PR04MB0971
  X-BEServer: HE1PR04MB0971
  X-Powered-By: ASP.NET
  Date: Wed, 13 Jan 2016 13:30:18 GMT
  Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8
}
4

1 に答える 1