Мы переходим от 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/',
)
)
);
Я перепробовал так много вариантов без удачи. Я был бы признателен за любые идеи, которые кто-либо может предоставить.
Спасибо!
Ну, я думаю, что публикация здесь помогла направить мои мысли по этому поводу. Я смог заставить его работать. Для всех, кто находится в той же лодке, вот решение, которое я придумал:
$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/',
)
)
);
Других решений пока нет …