Twitter с SSL с использованием cURL в PHP

0

Я немного новичок в этом. Но я пытаюсь использовать 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
ssl
twitter

2 ответа

0

Ваш код шизофреник:

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.

  • 0
    Это будет моей ошибкой, так как у меня работал первый, а потом пытался добавить второй бит. Так как мне выполнить аутентификацию И отправить этот запрос и получить ответ?
  • 0
    Я обновил пост с оригинальным кодом, который у меня работал. Но я не знаю, следующий шаг. Как запросить твиты с временной шкалы пользователя?
0

Вы можете использовать curl_getinfo, чтобы узнать, что происходит.

Вы также можете опубликовать URL-адрес документации Twitter, чтобы мы могли посмотреть.

$ headers указывает на хост как api.twitter.com, но CURLOPT_URL использует twitter.com, это опечатка?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню