invalid_grant при попытке получить запрос токена доступа Azure AD

Я пытаюсь получить токен доступа от Azure Ad, как описано ниже по ссылке. Мне нужно использовать Office 365 REST API.

msdn.microsoft.com/en-us/library/azure/dn645542.aspx

Запрос кода авторизации выполнен успешно, и я получаю код в обратном URL. Но запрос токена доступа не выполняется, и я получаю ответ, как показано ниже.

stdClass Object
(
[error] => invalid_grant
[error_description] => AADSTS70002: Error validating credentials. AADSTS70000: The provided access grant is invalid or malformed.
Trace ID: baf9f98a-655d-48e1-bc30-021a7d57effa
Correlation ID: 5030b57f-42e2-403a-ab3c-cfc970d886e2
Timestamp: 2015-04-21 12:58:00Z
[error_codes] => Array
(
[0] => 70002
[1] => 70000
)

[timestamp] => 2015-04-21 12:58:00Z
[trace_id] => baf9f98a-655d-48e1-bc30-021a7d57effa
[correlation_id] => 5030b57f-42e2-403a-ab3c-cfc970d886e2
[submit_url] =>
[context] =>
)

Ниже мой код:

$url = "https://login.windows.net/<tenant-id>/oauth2/token";
$postUrlData = "grant_type=authorization_code&client_id=$clientId&code=$authCode&redirect_uri=$redirectUri&client_secret=$secretKey";
$headers = array(
'Content-type: application/x-www-form-urlencoded',
'Content-length: '. strlen($postUrlData)
);
//echo $postUrlData;die;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS , $postUrlData);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$res = json_decode($result);
curl_close($ch);

Подскажите, пожалуйста, что я делаю не так?

1

Решение

Взгляните на этот пример PHP: https://github.com/jasonjoh/php-calendar. В частности, посмотрите на getTokenFromAuthCode функция в https://github.com/jasonjoh/php-calendar/blob/master/o365/Office365Service.php.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]