Zend Framework → Zend_Service_Twitter, небольшие изменения
Месяц назад обновил версию Zend Framework до 1.12.3 в движке этого блога, потестировал изменения локально, ничего страшного не обнаружил, залил на хостинг. Белый экран. Спустя пару минут вспомнил, что в девелоперском и тестовом окружениях у меня отключены последние сообщения из твиттера. А так же и то, что в последнем (первом) зенде были внесены изменения в Zend_Service_Twitter в связи с обновлением API до версии 1.1
Заметка, в принципе, и не стоит того, чтобы её писать, но по поисковым запросам вижу, что люди ищут, так что поделюсь решением, позволившим починить извлечение последних записей twitter-а.
Базироваться буду на этой записи, чтобы не повторяться, опишу только изменения. Для начала добавим пару строк в конфигурацию
1 2 3 4 5 6 | twitter.callbackUrl = "http://yourhost.com/twitter/callback"
twitter.siteUrl = "http://twitter.com/oauth"
twitter.requestTokenUrl = "https://api.twitter.com/oauth/request_token"
twitter.accessTokenUrl = "https://api.twitter.com/oauth/access_token"
twitter.consumerKey = "dadd58b24026011e2ce361"
twitter.consumerSecret = "ljsvb3fEM28e8c5a4fbb4f38bc378pNRzL5I1CrfV5B"
|
Первая добавилась потому, что запрос на получение токена перестал стучаться по правильному адресу, пришлось прописать адрес явно (высмотрел его в настройках твиттер-приложения). Вторую строку добавил уже по инерции. Не знаю, нужна она или нет, не выяснял, но тоже взял её из настроек, хуже от этого не стало, по крайней мере.
Далее внесём изменения в процесс создания объекта Zend_Service_Twitter. Тут лучше на примере, без лишних слов. Было:
1 2 3 4 5 6 7 8 9 10 11 | <?php
$options = Zend_Registry::get('options');
$config = $options['twitter'];
$config['username'] = $token->getParam('screen_name');
$config['accessToken'] = $token;
$twitter = new Zend_Service_Twitter($config);
$response = $twitter->account->verifyCredentials();
|
Стало:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php
$options = Zend_Registry::get('options');
$config = $options['twitter'];
$config['username'] = $token->getParam('screen_name');
$config['accessToken'] = $token;
$config['oauthOptions']['consumerKey'] = $options['twitter']['consumerKey'];
$config['oauthOptions']['consumerSecret'] = $options['twitter']['consumerSecret'];
$twitter = new Zend_Service_Twitter($config);
$response = $twitter->account->verifyCredentials();
|
Внимательный читатель и без подсветки обнаружит, что опять добавилось лишь две строки. Прочие мелочи описывать не буду, главное, что соединение установлено.
Комментарии
Message: Could not retrieve a valid Token response from Token URL: Desktop applications only support the oauth_callback value 'oob'
1. Читали ли вы предыдущую запись? Эта базируется на ней и лишь дополняет её.
2. Какая версия Zend Framework используется? Данный код работает с ZF 1.12.3, а для более старых версий с твиттером можно уже попрощаться, по моему, так как они работали с API, который уже не поддерживается.
3. Совпадают ли все настройки из twitter applications с теми, что прописаны в конфиге?
1 - обновил Zend до 12.3
2 - у меня небыл прописан callback в настройках приложения на dev.twitter.com
и ещё походу надо доступ правильный приложению ставить, там есть:
1 - Read only
2 - Read and Write
3 - Read, Write and Access direct messages
чтобы можно было в твитер что-то писать надо походу 3 вариант выбрать.. не пробовал ещё
$twitter-accountVerifyCredentials();
$twitter-statusesUserTimeline()
и у $twitter-accountVerifyCredentials(); лимит 15 запросов в 15 минут
а у $twitter-statusesUserTimeline() 180 запросов в 15 минут
получается из-за того, что до $twitter-statusesUserTimeline() стоит
$twitter-accountVerifyCredentials(); не получается воспользоваться всем лимитом $twitter-statusesUserTimeline();
вот так вот
Тут у меня всё практически, включая твиты, кешируется на 8 часов, поэтому всё равно. Не мог заметить.