Я пытаюсь получить контакты пользователя через 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 Авторизация: Носитель ---- токен здесь ----- Принять: приложение / JSON client-request-id: guid здесь return-client-request-id: true X-AnchorMailbox: user_email
Это код, который я взял прямо с Учебник Microsoft
публичная статическая функция makeApiCall ($ access_token, $ user_email, $ method, $ url, $ payload = NULL) { // Генерируем список заголовков для отправки всегда. $ headers = array ( «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", // Сказать серверу включить наш GUID идентификатора запроса в ответ. "X-AnchorMailbox:". $ User_email // Электронная почта пользователя провайдера для оптимизации маршрутизации вызова API ); $ curl = curl_init ($ url); switch (strtoupper ($ method)) { кейс "GET": // Ничего не делать, GET используется по умолчанию и не нуждается в // дополнительные заголовки. error_log ("Doing GET"); перерыв; кейс "POST": error_log ("Doing POST"); // Добавить заголовок Content-Type (ВАЖНО!) $ headers [] = "Content-Type: application / json"; curl_setopt ($ curl, CURLOPT_POST, true); curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ payload); перерыв; кейс "PATCH": error_log ("Doing PATCH"); // Добавить заголовок Content-Type (ВАЖНО!) $ headers [] = "Content-Type: application / json"; curl_setopt ($ curl, CURLOPT_CUSTOMREQUEST, "PATCH"); curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ payload); перерыв; кейс "DELETE": error_log ("Doing DELETE"); curl_setopt ($ curl, CURLOPT_CUSTOMREQUEST, "DELETE"); перерыв; дефолт: error_log ("НЕВЕРНЫЙ МЕТОД:". $ метод); выход; } 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 ("Запрос возвращен статус". $ httpCode); if ($ httpCode> = 400) { возвращаемый массив ('errorNumber' => $ httpCode, 'error' => 'Запрос вернул ошибку HTTP'. $ httpCode); } $ curl_errno = curl_errno ($ curl); $ curl_err = curl_error ($ curl); if ($ curl_errno) { $ msg = $ curl_errno. ":". $ curl_err; error_log ("CURL вернул ошибку:". $ msg); curl_close ($ завиток); возвращаемый массив ('errorNumber' => $ curl_errno, 'error' => $ msg); } еще { error_log ("Response:". $ response); curl_close ($ завиток); return json_decode ($ response, true); } }
Может кто-нибудь сказать, что я сделал не так?
Ошибка, которую вы видите (MailboxNotEnabledForRESTAPI
) означает, что ваш почтовый ящик Outlook.com еще не был включен для API. К сожалению, нет настроек, которые вы можете изменить, чтобы включить их самостоятельно. Мы включаем почтовые ящики партиями, поэтому для этого конкретного почтового ящика вам просто нужно подождать, пока он не будет включен.
Если вы хотите получить тестовую учетную запись, чтобы получить бесплатную пробную версию Office 365, или вы можете отправить нам электронное письмо по адресу [email protected], чтобы запросить предварительный просмотр учетной записи Outlook.com для разработчика. Для получения полной информации см. Требования к учетной записи раздел в https://dev.outlook.com/RestGettingStarted.
Других решений пока нет …