Неполадки при формировании сообщения для получения токена Azure с помощью Guzzle6 (ошибка: AADSTS90014)

Мы переходим от Guzzle3 к Guzzle6. Я написал процесс проверки подлинности и доступа к API управления Azure, который отлично работал в Guzzle3. Однако я не могу понять, как заставить его работать в Guzzle6. Цель состоит в том, чтобы получить токен доступа, который затем используется в последующих запросах к API управления Azure.

Оригинальный код:

$client = new Guzzle\Http\Client();
$request = $client->post("https://login.microsoftonline.com/{$tenant_id}/oauth2/token",
Array(
'Accept' => 'application/json',
),
Array(
'grant_type'    => 'client_credentials',
'client_id'     => $application_id,
'client_secret' => $application_secret,
'resource'      => 'https://management.core.windows.net/',
)
);

$response = $request->send();
$body = $response->getBody(true);

Новый код, над которым я работаю:

$client = new GuzzleHttp\Client();
$response = $client->request(
'POST',
"https://login.microsoftonline.com/{$tenant_id}/oauth2/token",
Array(
GuzzleHttp\RequestOptions::JSON => Array(
'grant_type'    => 'client_credentials',
'client_id'     => $application_id,
'client_secret' => $application_secret,
'resource'      => 'https://management.core.windows.net/',
)
)
);

Я перепробовал так много вариантов без удачи. Я был бы признателен за любые идеи, которые кто-либо может предоставить.

Спасибо!

1

Решение

Ну, я думаю, что публикация здесь помогла направить мои мысли по этому поводу. Я смог заставить его работать. Для всех, кто находится в той же лодке, вот решение, которое я придумал:

$client = new GuzzleHttp\Client();
$response = $client->request(
'POST',
"https://login.microsoftonline.com/{$tenant_id}/oauth2/token",
Array(
'form_params' => Array(
'grant_type'    => 'client_credentials',
'client_id'     => $application_id,
'client_secret' => $application_secret,
'resource'      => 'https://management.core.windows.net/',
)
)
);
2

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

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