2

Office JavaScript API を使用して Outlook アドインを開発し、メール メッセージのカテゴリを更新する必要があります。

アドイン トークンを使用して、Exchange EWS で UpdateItem を呼び出そうとすると、500 で失敗します。

リクエストとレスポンスを参照してください: http://pastebin.com/55x2d2Ht

  1. アプリのマニフェスト アクセス許可は ReadWriteMailbox (最高) です。
  2. アプリが OWA /manageapps で選択されると、「この追加がクリックされると、メールボックス内の電子メールの読み取り、作成、および更新が可能になります」と表示されます。
  3. mailbox.getCallbackTokenAsync からのトークンと makeEwsRequestAsync の使用の両方を試しました。
  4. EWS の GetItem 操作と CreateItem 操作は成功します - 失敗しているのは UpdateItem だけです
  5. UpdateItem への応答: 500 要求された Web メソッドは、この呼び出し元またはアプリケーションでは使用できません。
  6. 500 (403 ではない) であるという事実は、アドイン アプリの UpdateItem 操作が完全にブロックされていることを意味する場合があります。
  7. jwt トークン (getCallbackTokenAsync から) に「scp」キーがありません
  8. 同じ UpdateItem XML Soap パケットが別のトークンで送信された場合、Azure に登録されたテスト OAuth アプリから、Exchange への読み取り/書き込み権限で --> 成功します。このアプリの jwt トークンは「scp」: 「full_access_as_user Mail.Read Mail.ReadWrite Mail.Send」
  9. アドイン トークンを使用して別の exchange ユーザーで試行しましたが、これも失敗します。
  10. Office AddIn ドキュメントには、EWS UpdateItem 操作がアドインのコンテキストでサポートされていると記載されています。Office デベロッパー センターを参照してください
  11. 概要: Addin OAuth トークンを持つ Ews UpdateItem のみが失敗します。他の操作は成功し、他のトークン (または基本認証) を使用した Posting UpdateItem も成功します。
4

1 に答える 1

2

で UpdateItem を使用できるはずですmakeEwsRequestAsyncgetCallbackTokenAsyncこの呼び出しは、 と にのみ使用できる読み取り専用のトークンを返すため、GetItem使用できませんGetAttachment。でリクエストを行う場合makeEwsRequestAsync、XML SOAP リクエスト (のデータ パラメータは次のmakeEwsRequestようになります。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Body>
    <UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AutoResolve" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
      <ItemChanges>
        <t:ItemChange>
          <t:ItemId Id = "AAMkAGI3NDEzZjRhLWU3ZjktNGViNy04MTI1LWFhOWRiZDRlY2QwNABGAAAAAADBaXFYA4KPQqsQBpmZF2+2BwAa6KJzOcvaRKcc5UfLbF5tAAAA4fK1AAACk4HLLuxASqDPNieBkIv8AANIKlICAAA=" ChangeKey="CQAAABYAAAACk4HLLuxASqDPNieBkIv8AANIb3mG"/>
          <t:Updates>
            <t:SetItemField>
              <t:FieldURI FieldURI = "item:Categories" />
              <t:Message>
                <t:Categories>
                  <t:String>Workout</t:String>
                </t:Categories>
              </t:Message>
            </t:SetItemField>
          </t:Updates>
        </t:ItemChange>
      </ItemChanges>
    </UpdateItem>
  </soap:Body>
</soap:Envelope>

makeEwsRequestAsyncを呼び出すために、コールバック トークンを渡す必要はありません。

于 2016-11-29T23:05:50.093 に答える