У меня проблемы с переводом bash curl на PHP. Смотри, у меня это не работает. Я не знаю, как проверить, что это правильный код.
curl -X "POST" "https://someurl.com/oauth/token" \
-H "Authorization: Basic eyJ...V6w" \
--data-urlencode "grant_type=password" \
--data-urlencode "scope=api" \
--data-urlencode "[email protected]" \
--data-urlencode "password=p...d"
Я пробовал с этим:
$query1 = urlencode("grant_type=password");
$query2 = urlencode("scope=api");
$query3 = urlencode("[email protected]");
$query4 = urlencode("password=loginpass");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://someurl.com/oauth/token&".$query1."&".$query2."&".$query3."&".$query4."");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = "Authorization: Basic ZnVydGFzdGljLTZhMTAzNTE4Y2YyOGNhNmI3OTNhYzljNmJjM";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo "</pre>";
print_r($result);
echo "</pre>";
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
Вы можете использовать этот способ. Имейте в виду, что вы публикуете параметры. Таким образом, строка запроса не должна быть прикреплена к URL-адресу, а отправлена как параметры сообщения.
$data = array(
'grant_type' => 'password',
'scope' => 'api',
'username' => '[email protected]',
'password' => 'p...d'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://someurl.com/oauth/token");
$headers = array();
$headers[] = "Authorization: Basic ZnVydGFzdGljLTZhMTAzNTE4Y2YyOGNhNmI3OTNhYzljNmJjM";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
echo $response = curl_exec($ch);
Вы пробовали использовать какой-нибудь php-код?