Ошибка при получении токена запроса Twitter с использованием OAuth и PEAR Services_Twitter - PullRequest
2 голосов
/ 24 мая 2010

Я перехожу от базового метода аутентификации с использованием имени пользователя и пароля к аутентификации на основе OAuth.

Я использовал старую версию пакета Pearl Services_Twitter, которая не поддерживала OAuth.Последняя версия этого пакета поддерживает аутентификации OAuth, у него есть несколько зависимостей (HTTP_Request2, HTTP_OAuth).

Их было очень просто установить и обновить.Я сделал все это на своей локальной машине, и у меня не было проблем с установкой и запуском аутентификации.

Я отправил этот код на тестовый сайт, но каждый раз, когда код запрашивает «маркер запроса», я получаю следующее сообщение об ошибке«Невозможно подключиться к ssl: //api.twitter.com: 443. Ошибка # 0»

Я потратил 6 часов, чтобы убедиться, что все пакеты с грушей обновлены,проверка токена клиента и секрета токена, убедившись, что порт 443 не закрыт ... в дополнение к различным другим тестам.

Я исчерпал свои ресурсы и пришел к вам в надежде найти ответы.

Спасибо

PD: Я не понимаю, почему в сообщении говорится, что URL-адрес - ssl: //api.twitter.com: 443, а не https://api.twitter.com/request_token? первый - тот, который я использую для получения токена запроса.

Ответы [ 3 ]

3 голосов
/ 27 мая 2010

Вот реализация кода для ответа kguest.


$httpRequest = new HTTP_Request2(  null,
                                   HTTP_Request2::METHOD_GET , 
                                   array ('ssl_verify_peer'   => false, 
                                          'ssl_verify_host'   => false) 
                                         );
$httpRequest->setHeader('Accept-Encoding', '.*');
$request = new HTTP_OAuth_Consumer_Request;
$request->accept($httpRequest);


$oauth = new HTTP_OAuth_Consumer('twitterConsumerKey','twitterConsumerSecret');
$oauth->accept($request);

$oauth->getRequestToken('https://api.twitter.com/oauth/request_token',
                        "path/to/call/back/file.php"); 

$_SESSION['token']        = $oauth->getToken();
$_SESSION['token_secret'] = $oauth->getTokenSecret();

$authorize_link_twitter = $oauth->getAuthorizeUrl('https://api.twitter.com/oauth/authorize');

и что-то очень похожее было сделано для получения токена доступа, как только вы вернетесь из Twitter.Вся заслуга в kguest за идею, которая приведет к решению этой проблемы.это всего лишь код.

3 голосов
/ 25 мая 2010

«Невозможно подключиться к ssl: // _______: 443. Ошибка # 0» обычно означает, что существует ssl_verify_peer или проблема с совпадением сертификата - и API Twitter не требует от вас предоставления сертификата!

HTTP_Request2 по умолчанию устанавливает для параметра ssl_verify_peer значение true - это нормально, если вы указываете сертификат для установления соединения, поэтому, возможно, вам нужно проверить, что параметр отключен?

Это проверено для вас в Services_Twitterесли параметр конфигурации use_ssl включен, то, возможно, вам понадобится проверить, что установлено?

например:

$twitter = Services_Twitter_factory('statuses/update', true, array('use_ssl' => true));
0 голосов
/ 16 ноября 2010

Оформить отчет об ошибке http://pear.php.net/bugs/bug.php?id=18061 Я добавил ресурсы для решения проблем с SSL и пакетом Services_Twitter.

Но в основном вы должны следовать инструкциям на http://curl.haxx.se/docs/sslcerts.html

Отключение ssl_verify_peer и ssl_verify_host делает вас уязвимым для атак безопасности, которые пытается решить SSL ( Проверка однорангового узла в SSL с использованием python ). Так что не надо;)

...