Я немного новичок в этом. Но я пытаюсь использовать cURL для выполнения запроса GET, чтобы отключить пользовательские твиты.
Я смог подтвердить подлинность. Но я не могу понять, как получить данные. Я работаю с моего локального хоста.
Я попытался добавить базовый сертификат, но он не работает.
Нужно ли мне покупать SSL-сертификат для моего сайта? Я видел твиттер-каналы на других сайтах, которые не приобрели сертификаты SSL, поэтому я не знаю, как они это делают?
Я видел это в документации Twitter. Файл, о котором упоминается, является тем, что я могу купить?
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, True);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($connection, CURLOPT_CAINFO, "path:/ca-bundle.crt");
Это мой код cURL, он работал до того, как я CURLOPT_URL
раздел CURLOPT_URL
и получил положительный ответ от сервера:
$url = "https://api.twitter.com/oauth2/token";
$headers = array(
"POST /oauth2/token HTTP/1.1",
"Host: api.twitter.com",
"User-Agent: my Twitter App v.1",
"Authorization: Basic ".$encoded."",
"Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_CAINFO, "cacert.pem");
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$header = curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
curl_close($ch);
Изменить: есть проблемы с кодом выше, я знаю, что я делаю что-то неправильно, но не уверен, что. Во всяком случае, вот оригинальный код, который у меня был, который работал нормально и получил ожидаемый результат с сервера. Итак, следующий шаг - запросить пользовательские твиты со своей временной шкалы.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$header = curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Ваш код шизофреник:
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets);
Вы дважды устанавливаете URL-адрес для разных URL-адресов. Только LAST-url-набор будет иметь какой-либо эффект, поэтому вы не отправляете в API, вы публикуете что-то еще на главном сайте Twitter.
И нет, вам не нужен сертификат SSL на вашей собственной машине, чтобы сделать что-либо из этого. ca-cert.pem
- это список сертификатов государственных сертификатов сертификатов, которые будут использоваться для проверки/аутентификации собственного сертификата Twitter. Это в основном то же самое, что встроено в ваш браузер (ы), которые позволяют им проверять любой другой сертификат SSL там. например, вам не нужно покупать личный SSL-сертификат для посещения магазина на amazon.com, вам просто нужны сертификаты CA в ваших браузерах для аутентификации серверов Amazon.
Вы можете использовать curl_getinfo, чтобы узнать, что происходит.
Вы также можете опубликовать URL-адрес документации Twitter, чтобы мы могли посмотреть.
$ headers указывает на хост как api.twitter.com, но CURLOPT_URL использует twitter.com, это опечатка?