curl — PHP Box API отзывает токен: идентификатор клиента не найден в заголовках или теле

При попытке отозвать oauth access_token для Box я получаю сообщение об ошибке: идентификатор клиента не найден в заголовках или теле

Это команда curl (которая отлично работает):

локон https://api.box.com/oauth2/revoke -d ‘client_id = CLIENT_ID&client_secret = client_secret&токен = access_token ‘-X POST

При попытке сделать то же самое с php curl, я получаю ошибку.

<?php
$revokeurl="https://api.box.com/oauth2/revoke";
$dataq = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'token' => $access_token
);
$dataqjson= json_encode($dataq);

$headers=array(
"Content-Type: application/json");

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $revokeurl,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $dataqjson,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE
));

$response = curl_exec($curl);
$json_response = json_decode( $response, TRUE );
curl_close($curl);
?>

Почему мой POST с телом JSON неверен?

0

Решение

Данные должны быть установлены как application/x-www-form-urlencoded а не в кодировке JSON. Пример:

<?php

$revokeurl = "https://api.box.com/oauth2/revoke";

$dataq = array(
'client_id'     => 'client_id',
'client_secret' => 'client_secret',
'token'         => 'access_token',
);

$curl = curl_init();

curl_setopt_array(
$curl,
array(
CURLOPT_URL            => $revokeurl,
CURLOPT_CUSTOMREQUEST  => "POST",
CURLOPT_POSTFIELDS     => http_build_query($dataq),
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false
)
);

$response = curl_exec($curl);
$json_response = json_decode($response, false);
print_r($json_response);
curl_close($curl);
1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector