Автоматический постинг в Twitter

RomM1

Пользователь
#1
Раньше при использовании механизма базовой аутентификации все, что было нужно для работы с Twitter — это логин и пароль. Новый механизм OAuth более сложен, но в то же время значительнее безопаснее — даже если ваши данные перехватят при обращении к Twitter API, ваш логин и пароль от Twitter останутся в тайне.

Для использования Twitter API необходимо зарегистрировать свое приложение:

  • Зайдите на dev.twitter.com под своим логином и паролем, затем нажмите на ссылку "Create an app".
  • Заполните форму — скорее всего введенные данные никто не проверяет со стороны Twitter, но лучше все заполнить по уму. Нажмите кнопку "Create your Twitter application".
  • Теперь вам нужно 4 ключа для работы вашего приложения. Перейдите по ссылке dev.twitter.com/apps, а потом нажмите на название вновь созданного приложения. В Details в пункте Access level выбираем "Read and write".
  • Дальше нужно нажать на вкладку "OAuth tool" и скопировать: "Access Token (oauth_token)", "Access Token Secret (oauth_token_secret)", "Consumer Key", "Consumer Secret".
Нервничаете? Расслабьтесь, мы почти закончили — последнее, что нужно сделать: скачать библиотеку Abraham Twitter OAuth. Распаковать файлы в папку includes.

Открываем ajax/posts.php

Ищем:

PHP:
if ($row = DB()->fetch_row($sql) AND $row['last_post_time'])
        {
            if ($userdata['user_level'] == USER)
            {
                if (TIMENOW - $row['last_post_time'] < $bb_cfg['flood_interval'])
                {
                    $this->ajax_die($lang['FLOOD_ERROR']);
                }
            }
    }
После добавляем:

PHP:
require(INC_DIR .'twitteroauth.php');
 
define("CONSUMER_KEY", "ваш ключ");
define("CONSUMER_SECRET", "ваш ключ");
define("OAUTH_TOKEN", "ваш ключ");
define("OAUTH_SECRET", "ваш ключ");
 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$content = $connection->get('account/verify_credentials');
 
$sql = DB()->fetch_row("SELECT
topic_id, topic_title
FROM ". BB_TOPICS ."
WHERE topic_id = $topic_id
LIMIT 1
");
 
$connection->post('statuses/update', array('status' => $sql['topic_title'] . ' ' . $bb_cfg['server_name'] .'/viewtopic.php?t=' . $sql['topic_id']));

Открываем posting.php

Ищем:

PHP:
if ($mode == 'newtopic' || $mode == 'reply')
{
set_tracks(COOKIE_TOPIC, $tracking_topics, $topic_id);
}
После добавляем:

PHP:
if ($mode == 'newtopic')
{
require(INC_DIR .'twitteroauth.php');
 
define("CONSUMER_KEY", "ваш ключ");
define("CONSUMER_SECRET", "ваш ключ");
define("OAUTH_TOKEN", "ваш ключ");
define("OAUTH_SECRET", "ваш ключ");
 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$content = $connection->get('account/verify_credentials');
 
$sql = DB()->fetch_row("SELECT
topic_id, topic_title
FROM ". BB_TOPICS ."
WHERE topic_id = $topic_id
LIMIT 1
");
 
$connection->post('statuses/update', array('status' => $sql['topic_title'] . ' ' . $bb_cfg['server_name'] .'/viewtopic.php?t=' . $sql['topic_id']));
}
Если не шлет топики в титлах которых есть кириллица, то меняем кодировку posts.php и posting.php на UTF-8 без BOM.
 

Вложения

S

Saint

Гость
#5
Редактировать раздачи не могу, белый экран... Как исправить?
Все нашел, мой касяк....
Хм... или я что то не понял, или не там смотрю, но что то не отправляет не то не иные раздачи ни куда. Ну по крайне мере я их не вижу.
 
S

Saint

Гость
#7
Кто нибудь сталкивался с такой ошибкой?
PHP:
Fatal error: Call to undefined function curl_init() in /var/www/saint/data/www/extrawar.ru/includes/twitteroauth.php on line 199
А то после переезда выскакивают то одно то другое
 

PheRum

Разработчик
#8
Кто нибудь сталкивался с такой ошибкой?
PHP:
Fatal error: Call to undefined function curl_init() in /var/www/saint/data/www/extrawar.ru/includes/twitteroauth.php on line 199
А то после переезда выскакивают то одно то другое

Please Login or Register to view hidden text.


Код:
apt-get install php5-curl
 
S

Saint

Гость
#9
PheRum, что тут написано я знаю и так без переводчика. До переезда все нормально работало, как перенес началось то одно то другое. И с какого это фига она стала не определенной функцией если она в фале уже черт знает сколько находится?
PHP:
  function http($url, $method, $postfields = NULL) {
    $this->http_info = array();
    $ci = curl_init();
    /* Curl settings */
    curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
    curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
    curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
    curl_setopt($ci, CURLOPT_HEADER, FALSE);
 
Сверху