2017-01-03 10 views
0

私のOutlook 365統合では、Outlook JSアドインAPIとOutlook REST APIの両方を使用します。Outlook JSアドイン+ Outlook REST API

しかし、私はそれを見るように、それは別の許可/資格情報の取り扱いがあります。制限付き、ReadItem、ReadWriteItem、またはReadWriteMailbox

  • 見通しREST APIをしています

    • OutlookがアドインAPIは、権限に、次のいスコープでの完全なOAuth2サポート私に最も関心のあるoffline_accessの範囲。

    Outlookアドインを使用してユーザーに追加のUI要素を追加し、Outlook REST APIを使用してデータをOutlookデータと同期させて保存することはお勧めできません。

    ユーザーに2度の同意を強いられることなく可能ですか?まず、アドインをインストールするときにアドインに同意してから、同期ジョブ用にOutlook REST APIを使用するアプリに同意することです。

  • +0

    答えは [OutlookアドインのOutlook REST APIを使用](https://github.com/OfficeDev/office-js-docs/blob/master/docs/outlook/use) -rest-api.md) –

    +0

    アドインを使用していないとき(プッシュ通知を処理するために)ユーザーの代わりに更新トークンが必要なので、この機能を使用できないようです。このアプローチでは、限られた生存時間を持つアクセストークンしか得られません。 –

    答えて

    1

    私の知る限り、エンドユーザーに2番目のOAUTHベースの認証フローを完了するように依頼することはできません。あなたは

    Office.js

    によって提供されていないデータにアクセスする必要がある場合は、セカンダリ認証フローなしでEWS(Exchange Webサービス、RESTされていません)を使用することができます

    getUserIdentityTokenAsyncまたはmakeEwsRequestAsynchereを見てください。

    +0

    ありがとう、私はoffice.js APIのEWSメソッドについて知っていますが、私が必要とするのは、アドインを使用していないときにユーザーのカレンダーにアクセスして同期作業を行うことです。したがって、リフレッシュ/アクセストークンを維持するための2番目のOAuthのように見えます。 –

    +0

    これで、2回目の認証フローを作成する必要があることがわかりました。OutlookアドインからのEWSコールは、自分のニーズにあまりにも制限されています。ありがとう! –

    0

    2番目の認証フローは必要ありません。アクセストークンを取得するには、Office.context.mailbox.getCallbackTokenAsync({isRest:true}、function(result)...)を使用して、カレンダーREST APIのインスタンスに対してjQueryの/アヤックスを使用。

    +0

    質問をよりわかりやすくするために書式を設定してください。 – Masoud

    +0

    ですが、バックエンドにトークンを保存してそこから使用できますか?アクセストークンが期限切れになるとリフレッシュトークンも取得できますか? REST APIからすべての呼び出しを行うことはできますか?プッシュ通知を購読する? –

    0

    あなたはOffice.jsを使用することができますし、それからトークンを取得することができますし、トークンはAJAX呼び出しを実行するために使用されています。私は

    var _mailbox = Office.context.mailbox; 
    _mailbox.getCallbackTokenAsync({ isRest: true }, function (result) { 
        if (result.status === Office.AsyncResultStatus.Succeeded) { 
         var accessToken = result.value; 
    
         var userDetail; 
        var url = Office.context.mailbox.restUrl+ "/v2.0/me"; 
        try { 
        $.ajax({ 
         type: 'GET', 
         url: url, 
         contentType: "application/json", 
         headers: { 'Authorization': 'Bearer ' + accessToken }, 
         async: false, 
         success: function (data) { 
          userDetail = data; 
         }, 
         error: function (textStatus, errorThrown) { 
    
          userDetail = null;//doesnt goes here 
         } 
    
        }); 
    } 
    catch (error) 
    { 
        userDetail = null; 
        writeLog(error); 
    } 
        } 
        } 
    

    コードギブの上に、ここで例を挙げています最初の名前、電子メールのアドレスなどを含む現在のユーザーの詳細フォルダの作成、電子メールの移動、電子メールの削除など、いくつかの操作を実行できます

    関連する問題