Невозможно получить информацию о профиле пользователя из Microsoft Graph API

Я решил создать приложение на старом портале Azure и установить приложение на мультитенант. Я установил конечную точку токена OAuth 2.0 ( https://login.microsoftonline.com/common/oauth2/token) для токена и конечную точку авторизации OAuth 2.0 ( https://login.microsoftonline.com/common/oauth2/authorize) для авторизации. вот мой код для авторизации: header ('location: https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&scope=openid%20profile&client_id=xxxxxxxxxxxxxxx&redirect_uri=http://localhost/xxxxxxx/contacts/connectOffice');

и это мой код для получения токена:

$data = array (
      'code' => $code,
      'client_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=',
      'client_id' => 'xxxxxxxxxxxxxxxxxxxx',
      'grant_type' => 'authorization_code',
      'redirect_uri' => 'http://localhost/xxxxxx/contacts/connectOffice',
      'scope' =>'offline_access Contacts.ReadWrite'
    );
    $url = 'https://login.microsoftonline.com/common/oauth2/token';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);      
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($curl);

Вот результат, который я получаю из запроса токена:

Массив ( [token_type] => Носитель [expires_in] => 3599 [ext_expires_in] => 0 [expires_on] => 1487828228 [access_token] => AQABAAAAAADRNYRQ3dhRSrm-4K-adpCJ2ghMrdr3JJCVtGDvxtmOEHcFyxxxxxxxxxxxxxxxxvU_o8Ob_GixKxnHPPCAA [refresh_token] => AQABAAAAAADRxxxxxxxxxxx0EwuR_igY5qiAA [id_token] => eyJ0eXAiOiJKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFaxpRFq48A)

Я использую этот токен доступа, который я использую для отправки запроса GET для доступа к Microsoft Graph API ( https://graph.microsoft.com/v1.0/me) для получения профиля пользователя. Это мой запрос на получение:

$url = 'https://graph.microsoft.com/v1.0/me';
$headers = array(     
        "Authorization: Bearer ".$access_token                 
      );
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url );               
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');              
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);               
$response=curl_exec($ch);

Я получаю эту ошибку:

Array ([error] => Array ([code] => InvalidAuthenticationToken [message] => Сбой анализа CompactToken с кодом ошибки: -2147184105 [innerError] => Array ( [идентификатор-запроса] => 43eae80b-c3f0-4909-a71d) -4e5d3d982579 [дата] => 2017-02-22T15:09:25)

Кто-нибудь может подсказать, где я могу пойти не так?

0 ответов

Другие вопросы по тегам