0

Outlook の連絡先 REST API を使用してユーザーの連絡先を取得しようとしています。アクセス トークンは取得できましたが、連絡先を取得しようとすると 404 エラーが発生します。

送られてきたURLです

https://outlook.office.com/api/v1.0/me/contacts?%24select=GivenName%2CSurname%2CEmailAddresses&%24orderby=GivenName&%24top=10

とヘッダー

ユーザーエージェント: php-tutorial/1.0
 Authorization: Bearer ----ここにトークン-----
 受け入れる: アプリケーション/json
 client-request-id: ここに GUID
 return-client-request-id: true
 X-AnchorMailbox: user_email

これは、マイクロソフトのチュートリアルから直接取ったコードです。

    public static function makeApiCall($access_token, $user_email, $method, $url, $payload = NULL)
    {
      // 常に送信するヘッダーのリストを生成します。
      $headers = 配列(
        "User-Agent: php-tutorial/1.0", // User-Agent ヘッダーを送信するのがベスト プラクティスです。
        "Authorization: Bearer ".$access_token, // 常に認証トークンが必要です!
        "Accept: application/json", // 常に JSON 応答を受け入れます。
        "client-request-id: ".self::makeGuid(), // 新しい各リクエストに新しい GUID をスタンプします。
        "return-client-request-id: true", // サーバーに、応答に request-id GUID を含めるように指示します。
        "X-AnchorMailbox: ".$user_email // API 呼び出しのルーティングを最適化するプロバイダー ユーザーの電子メール
      );

      $curl = curl_init($url);

      switch(strtoupper($method)) {
        ケース "GET":
          // 何もする必要はありません。GET がデフォルトであり、何もする必要はありません
          // 追加のヘッダー。
          error_log("GET を実行中");
          壊す;
        ケース「ポスト」:
          error_log("POST を実行中");
          // Content-Type ヘッダーを追加します (重要!)
          $headers[] = "コンテンツ タイプ: アプリケーション/json";
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
          壊す;
        ケース「パッチ」:
          error_log("PATCH を実行中");
          // Content-Type ヘッダーを追加します (重要!)
          $headers[] = "コンテンツ タイプ: アプリケーション/json";
          curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
          curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
          壊す;
        ケース「削除」:
          error_log("削除中");
          curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
          壊す;
        デフォルト:
          error_log("無効なメソッド: ".$method);
          出口;
      }

      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
      $response = curl_exec($curl);
      error_log("curl_exec が完了しました。");

      $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
      error_log("リクエストがステータスを返しました".$httpCode);
      もし ($httpコード >= 400) {
        return array('errorNumber' => $httpCode,
                     'error' => 'リクエストが HTTP エラーを返しました '.$httpCode);
      }

      $curl_errno = curl_errno($curl);
      $curl_err = curl_error($curl);
      もし ($curl_errno) {
        $msg = $curl_errno.": ".$curl_err;
        error_log("CURL がエラーを返しました: ".$msg);
        curl_close($curl);
        return array('errorNumber' => $curl_errno,
                     'エラー' => $msg);
      }
      そうしないと {
        error_log("応答: ".$response);
        curl_close($curl);
        return json_decode($response, true);
      }
    }

誰かが私が間違ったことを言うことができますか?

4

1 に答える 1

1

表示されているエラー ( MailboxNotEnabledForRESTAPI) は、Outlook.com メールボックスがまだ API に対して有効になっていないことを示しています。残念ながら、自分で有効にするために変更できる設定はありません。メールボックスをバッチで有効にしているため、その特定のメールボックスについては、有効になるまで待つ必要があります。

Office 365 の無料試用版を入手できるようにテスト アカウントを取得したい場合は、outlookdev@microsoft.com に電子メールを送信して、開発者プレビューの Outlook.com アカウントを要求することができます。詳細については、https://dev.outlook.com/RestGettingStartedのアカウント要件セクションを参照してください。

于 2015-09-11T13:24:18.040 に答える