微软的Outlook API给404错误

我尝试通过Outlook联系人REST API获取用户联系人。 我成功获得访问令牌,但是当我尝试获取联系人时,我收到404错误。

这是传送的网址

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

和标题

 User-Agent: php-tutorial/1.0
 Authorization: Bearer ----token here-----
 Accept: application/json
 client-request-id: guid here
 return-client-request-id: true
 X-AnchorMailbox: user_email

这是代码,我从微软教程中直接获取

    public static function makeApiCall($access_token, $user_email, $method, $url, $payload = NULL)
    {
      // Generate the list of headers to always send.
      $headers = array(
        "User-Agent: php-tutorial/1.0",         // Sending a User-Agent header is a best practice.
        "Authorization: Bearer ".$access_token, // Always need our auth token!
        "Accept: application/json",             // Always accept JSON response.
        "client-request-id: ".self::makeGuid(), // Stamp each new request with a new GUID.
        "return-client-request-id: true",       // Tell the server to include our request-id GUID in the response.
        "X-AnchorMailbox: ".$user_email         // Provider user's email to optimize routing of API call
      );

      $curl = curl_init($url);

      switch(strtoupper($method)) {
        case "GET":
          // Nothing to do, GET is the default and needs no
          // extra headers.
          error_log("Doing GET");
          break;
        case "POST":
          error_log("Doing POST");
          // Add a Content-Type header (IMPORTANT!)
          $headers[] = "Content-Type: application/json";
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
          break;
        case "PATCH":
          error_log("Doing PATCH");
          // Add a Content-Type header (IMPORTANT!)
          $headers[] = "Content-Type: application/json";
          curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
          curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
          break;
        case "DELETE":
          error_log("Doing DELETE");
          curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
          break;
        default:
          error_log("INVALID METHOD: ".$method);
          exit;
      }

      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
      $response = curl_exec($curl);
      error_log("curl_exec done.");

      $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
      error_log("Request returned status ".$httpCode);
      if ($httpCode >= 400) {
        return array('errorNumber' => $httpCode,
                     'error' => 'Request returned HTTP error '.$httpCode);
      }

      $curl_errno = curl_errno($curl);
      $curl_err = curl_error($curl);
      if ($curl_errno) {
        $msg = $curl_errno.": ".$curl_err;
        error_log("CURL returned an error: ".$msg);
        curl_close($curl);
        return array('errorNumber' => $curl_errno,
                     'error' => $msg);
      }
      else {
        error_log("Response: ".$response);
        curl_close($curl);
        return json_decode($response, true);
      }
    }

有人能说我做错了吗?


您看到的错误( MailboxNotEnabledForRESTAPI )表示尚未为您的Outlook.com邮箱启用API。 不幸的是,您无法更改设置来自己启用它们。 我们正在批量启用邮箱,因此对于那个特定的邮箱,您只需等待它启用即可。

如果您想获得测试帐户,以便免费试用Office 365,或者您可以发送电子邮件至outlookdev@microsoft.com以请求开发人员预览Outlook.com帐户。 有关完整的详细信息,请参阅https://dev.outlook.com/RestGettingStarted上的帐户要求部分。

链接地址: http://www.djcxy.com/p/48607.html

上一篇: Microsoft outlook API give 404 error

下一篇: Get data from asp.net page using curl