Обновление маркера доступа 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 сообщите нам, если это сработает. Спасибо

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