Я использовал API отдыха Neteller. Я изо всех сил пытался получить правильный ответ для ключа аутентификации, я надеялся, что кто-то может указать мне правильное направление.
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_URL, "https://api.neteller.com/v1/oauth2/token?grant_type=client_credentials");
curl_setopt($curl, CURLOPT_USERPWD, "clientId:clientSecret");
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type:application/json", "Cache-Control:no-cache"));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query("scope: default"));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$serverOutput = curl_exec($curl);
echo $serverOutput;
Я получаю ответ «invalid_client». Я проверил clientId и секрет, и они верны
Спасибо
Каллум
Вы не отправляете параметры, но строка «clientId: clientSecret»:
Может быть, вы имеете в виду:
curl_setopt($curl, CURLOPT_USERPWD, "$clientId:$clientSecret");
Также вы можете вызывать неправильный URL, например, для тестовых сред вы должны позвонить:
curl_setopt($curl, CURLOPT_URL, "https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials");
Я просто беру твой пример, и он работает на меня:
$username = 'MerchantXYZ';
$password = 'B81dff9bb4020a89e8ac44cdfdcecd702151182fdc952272661d290ab2e5849e31bb03deede';
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_URL, "https://api.neteller.com/v1/oauth2/token?grant_type=client_credentials");
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type:application/json", "Cache-Control:no-cache"));
curl_setopt($curl, CURLOPT_POSTFIELDS, array("scope"=>"default"));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$serverOutput = curl_exec($curl);
echo $serverOutput;
Ответ:
{«accessToken»: «B.AQBBBAAAUnzfOwkAAAAAAAEk-BRM0QBTOoehaumwlvdwjqX.EAAQ0NOOTDeY2aMHUCwH4YCugGUX4ro», «tokenType»: «Bearer», 300) истекает
С уважением.
Ваш CURLOPT_POSTFIELDS
неверен как http_build_query()
ожидает массив в качестве входных данных, но вы предоставляете строку.
Попробуйте изменить эту строку на:
curl_setopt($curl, CURLOPT_POSTFIELDS, array("scope"=>"default"));
При использовании потока client_credentials область действия не имеет значения. Это относится только к потоку authorization_grant, все помеченное как область «по умолчанию» не требует авторизации члена. Ресурсные поля со значением «default» будут возвращены с использованием базовых client_credentials без необходимости запрашивать разрешение у участника.