2015-09-10 5 views
0

Я пытаюсь получить контакты пользователей через контакты Outlook REST API. Я успешно получил токен доступа, но когда я пытаюсь получить контакты, я получаю ошибку 404.Microsoft Outlook API дает ошибку 404

Это отослано URL-адрес

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 

Это код, который я взял прямо из Microsoft tutorial

 
    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); 
     } 
    } 

Может кто-нибудь сказать, что я сделал не так?

+0

Можете ли вы поделиться содержимым ответа об ошибке? –

+0

{"error": {"code": "MailboxNotEnabledForRESTAPI", "message": "REST API не поддерживается для этого почтового ящика."}}. Ну ... Теперь я мог видеть проблему сам. Но как я могу включить REST API для моего почтового ящика? – Saril

ответ

1

Ошибка, которую вы видите (MailboxNotEnabledForRESTAPI), указывает, что почтовый ящик Outlook.com еще не включен для API. К сожалению, нет настройки, которую вы можете изменить, чтобы включить их самостоятельно. Мы включаем пакеты почтовых ящиков, поэтому для этого конкретного почтового ящика вам просто нужно подождать, пока он не будет включен.

Если вы хотите получить тестовую учетную запись, чтобы получить бесплатную пробную версию Office 365, или вы можете отправить нам электронное письмо по адресу [email protected], чтобы запросить предварительный просмотр Outlook.com. Подробную информацию см. В разделе Требования к учетной записи в разделе https://dev.outlook.com/RestGettingStarted.

+0

Любая оценка временной шкалы для почтовых ящиков outlook.com для REST API? Я пытаюсь решить, нужно ли мне использовать старый API outlook.com для доступа к проекту, над которым я работаю. – scramblor

Смежные вопросы