Обновление маркера доступа MS Graph с помощью GuzzleHttp
Я пытаюсь обновить токен доступа, используя токен обновления на графической платформе MS. Для этого меня вдохновила эта документация от Microsoft:https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow . Мне удалось при получении нового токена с помощью Postman, подделав запрос и заменив необходимый ключ => значение значениями, специфичными для моего приложения. Когда я выгружаю код, используя формат PHP Guzzle, я получаю следующее:
<?php
$client = new Client();
$headers = [
'Content-Type' => 'application/x-www-form-urlencoded',
];
$options = [
'form_params' => [
'client_id' => config('config.microsoft.clientId'),
'scope' => 'user.read',
'redirect_uri' => 'http://localhost:8000/callback',
'grant_type' => 'refresh_token',
'client_secret' => config('config.microsoft.ClientSecret'),
'refresh_token' => config('config.microsoft.RefToken')
]];
$request = new Request('POST', 'https://login.microsoftonline.com/common/oauth2/v2.0/token', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res;
Я добавляю скопированный этот код в свое приложение, но когда я его запускаю, вот что я получил:
GuzzleHttp\Psr7\Response {#1514 ▼
-reasonPhrase: "OK"
-statusCode: 200
-headers: array:13 [▶]
-headerNames: array:13 [▶]
-protocol: "1.1"
-stream: GuzzleHttp\Psr7\Stream {#1524 ▼
-stream: stream resource @13 ▶}
-size: null
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
}
Обратите внимание, что я получаю код состояния 200, что означает, что запрос выполнен успешно, но ничего не получено с веб-сайта MS. Я получаю новую информацию о токене с Postman, почему я ничего не получаю в своем PHP-приложении с точно такой же копией-вставкой запроса. Возможно ли, что MS стесняется отвечать моему клиенту Guzzle? Кстати, тот же экспорт работает и в cURL.
РЕДАКТИРОВАТЬ:
Я пробовал с "PHP cURL" и "PHP - HTTP_Request2", и оба эти метода работают в моем приложении. пока я буду придерживаться PHP-HTTP_Request2. Если у кого-то есть идеи, почему я ничего не получаю с помощью GuzzleHTTP, сообщите мне.
1 ответ
Спасибо, что связались с нами, как мы видим в коде, вы используете функцию wait() вместо await(), не могли бы вы исправить и попробовать еще раз?
вы также можете увидеть похожие вопросы — Как я могу использовать Guzzle для отправки запроса POST в JSON?
ref docs- https://docs.guzzlephp.org/en/latest/psr7.html#responses сообщите нам, если это сработает. Спасибо