неверный тип предоставления — oauth 2.0 — получение токена

Я боролся со следующим кодом в течение некоторого времени. Я получаю следующую ошибку: {«error»: «invalid_request», «error_description»: «неверный тип гранта»}.

Доступна дополнительная документация по API, над которым я работаю Вот::

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://id.shoeboxed.com/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => "{\"code\": \"['code']\",\"grant_type\":\"authorization_code\",\"redirect_uri\": \"http://website.com/foursquare2.php\",\"client_id\": \"f8de67be8dc84e449203fcdd4XXXXXXX\",\"client_secret\": \"HS5ZeIVsKW0/qqiO9/XcdeWqnF8vtzQrpY8gcdrxg0BXNZXXXXXXX\"}",
CURLOPT_HTTPHEADER => array(
"application/x-www-form-urlencoded")
));


/*
//Another Attempt at it is below
curl -d code=['code'] \
-d grant_type=authorization_code \
--data-urlencode redirect_uri='http://website.com/foursquare2.php' \
-u f8de67be8dc84e449203fcdd44abad5a:HS5ZXXXXXXX/qqiO9/XcdeWqnF8vtzQrpY8gcdrxg0BXNXXXXXXX \
-XPOST https://id.shoeboxed.com/oauth/token
*/


$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}

?>

0

Решение

От https://secure.php.net/manual/en/function.curl-setopt.php#refsect1-function.curl-setopt-notes

Передача массива в CURLOPT_POSTFIELDS будет кодировать данные как multipart / form-data, в то время как передача строки в кодировке URL будет кодировать данные как application / x-www-form-urlencoded.

В случае API, который вы используете, вы должны использовать application/x-www-form-urlencoded

<?php

$curl = curl_init();

$postFields = array(
'code'          => 'code',
'grant_type'    => 'authorization_code',
'redirect_uri'  => 'http://website.com/foursquare2.php',
'client_id'     => 'f8de67be8dc84e449203fcdd4XXXXXXX',
'client_secret' => 'HS5ZeIVsKW0/qqiO9/XcdeWqnF8vtzQrpY8gcdrxg0BXNZXXXXXXX',
);

curl_setopt_array(
$curl, array(
CURLOPT_URL => "https://id.shoeboxed.com/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($postFields),
)
);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
0

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

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

По вопросам рекламы [email protected]