#php #curl
#php #curl
Вопрос:
У меня есть auth.php файл, который должен отправлять запрос к API с некоторыми заголовками, данными и прочим.
Я попробовал Postman, и он почти сразу дал мне ответ.
Я скопировал код (PHP> cURL) и попробовал его, и это продолжалось waiting for MYPRIVATESITE.com
в течение 30 секунд (я установил время ожидания на это), а затем просто cURL ERROR: TIMED OUT
(или что-то в этом роде).
Что я сделал не так? Это работает, например, с postman, так почему не с моим сайтом?
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://discordapp.com/api/v6/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "client_id=PRIVATEIDamp;client_secret=PRIVATEKEYamp;grant_type=authorization_codeamp;code=$codeamp;redirect_uri=https://kanebot.epizy.com/auth.phpamp;scope=identify guildsamp;undefined=",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"cache-control: no-cache"
)
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Примечание: PRIVATEKEY
и PRIVATEID
есть, я просто удаляю их, потому что я не хочу, чтобы кто-то еще украл это. Это определено, и это сработало (прочитайте).
$code
Также определено.
Ответ №1:
Вам не хватает amp;
оператора в вашем POSTFIELDS
между client_secret
и grant_type
попробуйте добавить amp;
и посмотрите, работает ли он после (это наверняка решит одну из ваших проблем)
client_id=PRIVATEIDamp;client_secret=PRIVATEKEYgrant_type=authorization_codeamp;code=$codeamp;redirect_uri=https%3A%2F%2Fkanebot.epizy.com%2Fauth.phpamp;scope=identify%20guildsamp;undefined=
Комментарии:
1. Чтобы добавить к этому, я бы предложил использовать http_build_query , а не создавать его самостоятельно.
2. Как бы я поступил по этому поводу? Также это то, что postman выплевывает 😉
3. @ron О, спасибо за совет, но это была просто опечатка в моей статье : (
4. если он работает в postman, то у вас есть возможность просмотреть код в postman (кнопка «код» в разделе запроса справа), чем выбрать php —> curl, чем запускать его в вашей среде, возможно, это поможет вам определить, что неправильно