Как переписать этот запрос cURL в Guzzle 6? - PullRequest
0 голосов
/ 24 октября 2019

Пример кода (предоставляется Channel Advisor):

https://developer.channeladvisor.com/authorization/updating-access-token/php-updating-access-token

<?php
$endpoint = "https://api.channeladvisor.com/oauth2/token";
$refresh_token="{{REFRESH_TOKEN}}";
$application_id= "{{APPLICATION_ID}}";
$shared_secret="{{SHARED_SECRET}}";
$url = $endpoint;
$client_id = base64_encode("$application_id:$shared_secret");
$body = "grant_type=refresh_token&refresh_token=$refresh_token";
$length = strlen($body);
$headers = array(
    "Authorization: Basic $client_id",
    "Content-Type: text/plain",
    "Cache-Control: no-cache",
    "Content-Length: $length"
);
echo "URL:".$url."\n";
echo "Body:$body\n";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
print_r($httpcode);
echo"\n";
$json = json_decode($result, true);
var_dump($json);
?>

Попытка переписать как HTTP-запрос Guzzle:

У меня вопрос, я задаюБазовая аутентификация правильно?

    $accessToken = {{ACCESS_TOKEN}};
    $refresh_token = {{ACCESS_TOKEN}};
    $application_id = {{APPLICATION_ID}};
    $shared_secret = {{SHARED_SECRET}};
    $base_uri = "https://api.channeladvisor.com/oauth2/token";
    $client_id = 'Basic ' . base64_encode("$application_id:$shared_secret");

          $client = new Client(
            ['headers' => [
                'Content-Type' => 'application/x-www-form-urlencoded',
                'Authorization' => $client_id
            ]
        ]
    );

    $result = $client->request('POST', $base_uri, [
        'query' => [
            'grant_type' => 'refresh_token',
            'refresh_token' => $refresh_token
        ],
    ]);

    $body = $response->getBody();
    // Implicitly cast the body to a string and echo it
    echo $body;

1 Ответ

1 голос
/ 24 октября 2019

Вы отправляете запрос POST, тогда, я полагаю, вам следует отправить данные FORM, а не данные QUERY.

$response = $client->request('POST', $base_uri, [
    'form_params' => [
        'grant_type' => 'refresh_token',
        'refresh_token' => $refresh_token
    ],
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...