2017-01-26 25 views
1

下部の編集を参照してください。EWSとOAuthを使用するOffice 365カレンダーAPI 2

私は、ユーザーのカレンダーの予定を作成/削除/更新するために、EWS(管理対象APIではなく)を使用してOffice 365 APIを使用しようとしています。

これまでのところ、私は正常にBasic Authを使用して、SOAPリクエストが機能することを検証しました。私は現在、Basic AuthをOAuth 2に置き換えようとしています。私はクライアントクレデンシャルフローを使用する必要があります。アプリケーションへ

  • 提供管理者の同意:

    は、ここで私が続くステップです。ブラウザに次のURLを表示し、管理者アカウントを使用して同意しました。同意権を付与する際に

    https://login.microsoftonline.com/common/oauth2/authorize? 
        response_type=code+id_token& 
        scope=openid& 
        client_id=[Client ID]& 
        redirect_uri=http://localhost/myapp/permissions& 
        resource=https://outlook.office.com& 
        prompt=admin_consent& 
        response_mode=form_post& 
        nonce=1234 
    
  • 、私は応答からid_tokenを取得し、そしてJWT.ioを使用してそれをデコード。ペイロードから、私はtidを記録しました。

  • 次に、私は次のリクエスト送信によってアクセストークンを取得した:私は、基本認証を使用して行ったように、私は基本認証ヘッダを置き換える以外は、私は、同じ要求を送ったアクセストークンを使用

    POST https://login.microsoftonline.com/[TID]/oauth2/token HTTP/1.1 
    cache-control: no-cache 
    Content-Type: application/x-www-form-urlencoded 
    Accept: */* 
    Host: login.microsoftonline.com 
    accept-encoding: gzip, deflate 
    Connection: close 
    
    client_id=[CLIENT ID]& 
    client_secret=[CLIENT SECRET]& 
    grant_type=client_credentials& 
    resource=https%3A%2F%2Foutlook.office.com 
    
  • The token contains not enough scope to make this call.

    Authorization: Bearer [Access Token]

と私は、次のようなエラー(403 Forbidden)を受け

このエラーを修正するには何が必要ですか?

編集1:私はUse Exchange Web Services with full access to all mailboxesアプリケーションのアクセス許可を追加し、今500 Internal Server ErrorになりSOAPメッセージを送信する...

答えて

0

ソリューションは、次の関係:

  1. Use Exchange Web Services with full access to all mailboxesアプリケーションを追加しますEWSではより細かいアクセス許可を許可していないため、アクセス許可は必要ありません。

  2. 目的のメールボックスにExchangeImpersonation SOAP headerを追加します。

  3. X-AnchorMailbox HTTPヘッダーを設定します。

関連する問題