Настройка API Twitter, получение последних твитов

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

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

    <div id="twitter_update_list">
    </div>
    <script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=stackoverflow&include_rts=true&count=4&callback=twitterCallback2">
    </script>

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

Я не уверен, как исходить отсюда. Я был бы признателен за любые предложения в этом отношении. Напомним, все, что я пытаюсь сделать, это захватить 3-4 последних твита из моей учетной записи.

Большое спасибо заранее!

Ответ 1

Итак, вы ДЕЙСТВИТЕЛЬНО не хотите делать эту клиентскую сторону. (Просто просмотрели многочисленные документы, а разработчики предлагают делать все серверные серверы).

Что вам нужно сделать:

Сначала: зарегистрируйтесь на https://dev.twitter.com и создайте новое приложение.

Второй: ПРИМЕЧАНИЕ. Ваш потребительский ключ/секретный ключ с маркером доступа/секретным доступом

Третий: Скачать Twitter oAuth Library (В этом случае я использовал библиотеку PHP https://github.com/abraham/twitteroauth, дополнительную библиотеку расположенный здесь: https://dev.twitter.com/docs/twitter-libraries)

Четвертый: (Если используется php) Убедитесь, что cURL включен, если вы используете на LAMP здесь нужную команду:

sudo apt-get install php5-curl

Пятый: создайте новый файл PHP и вставьте следующее: Спасибо Tom Elliot http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/ p >

<?php
session_start();
require_once("twitteroauth/twitteroauth/twitteroauth.php"); //Path to twitteroauth library you downloaded in step 3

$twitteruser = "twitterusername"; //user name you want to reference
$notweets = 30; //how many tweets you want to retrieve
$consumerkey = "12345"; //Noted keys from step 2
$consumersecret = "123456789"; //Noted keys from step 2
$accesstoken = "123456789"; //Noted keys from step 2
$accesstokensecret = "12345"; //Noted keys from step 2

function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
  $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
  return $connection;
}

$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret);

$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitteruser."&count=".$notweets);

echo json_encode($tweets);
echo $tweets; //testing remove for production   
?>

И бум, все готово. Я знаю, что это не чистое решение js, но снова чтение через новые API API Twitter 1.1, они ДЕЙСТВИТЕЛЬНО не хотят, чтобы вы делали этот клиентский сайт. Надеюсь, это поможет!

Ответ 2

Как получить последние несколько твитов пользователя с базовой функциональностью PHP (нет библиотеки CURL или Twitter oAuth):

  • Зарегистрируйте свое приложение/веб-страницу https://dev.twitter.com (Возможно, вам потребуется подтвердить номер своего личного счета)

  • Примечание: потребительский ключ и потребительский секрет

  • Код PHP:

    // auth parameters
    $api_key = urlencode('REPLACEWITHAPPAPIKEY'); // Consumer Key (API Key)
    $api_secret = urlencode('REPLACEWITHAPPAPISECRET'); // Consumer Secret (API Secret)
    $auth_url = 'https://api.twitter.com/oauth2/token'; 
    
    // what we want?
    $data_username = 'Independent'; // username
    $data_count = 10; // number of tweets
    $data_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
    
    // get api access token
    $api_credentials = base64_encode($api_key.':'.$api_secret);
    
    $auth_headers = 'Authorization: Basic '.$api_credentials."\r\n".
                    'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'."\r\n";
    
    $auth_context = stream_context_create(
        array(
            'http' => array(
                'header' => $auth_headers,
                'method' => 'POST',
                'content'=> http_build_query(array('grant_type' => 'client_credentials', )),
            )
        )
    );
    
    $auth_response = json_decode(file_get_contents($auth_url, 0, $auth_context), true);
    $auth_token = $auth_response['access_token'];
    
    // get tweets
    $data_context = stream_context_create( array( 'http' => array( 'header' => 'Authorization: Bearer '.$auth_token."\r\n", ) ) );
    
    $data = json_decode(file_get_contents($data_url.'&count='.$data_count.'&screen_name='.urlencode($data_username), 0, $data_context), true);
    
    // result - do what you want
    print('<pre>');
    print_r($data);
    

Протестировано с помощью XAMPP для установки по умолчанию Windows и Centos6 (PHP 5.3)

Наиболее вероятной проблемой может быть то, что openssl не включен в php.ini

Чтобы проверить, существует ли расширение = php_openssl.dll или extension = php_openssl.so, и раскомментировано в php.ini

Ответ 3

Если вам нужно только javascript-решение, вы можете использовать Twitter-Post-Fetcher Джейсона Майеса http://jasonmayes.com/projects/twitterApi/

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

Ответ 4

На самом деле твиттер имеет множество ограничений, так как существует много конкурсов от таких компаний, как Nike и другие. Чтение чириканья ограничено в том смысле, что если вы читаете последний API, он фактически немного отстает от времени.

Они также контролировали задержку DM, что означает, что вы не можете сразу же DM, даже если вы это сделаете, другая сторона получит только через X промежуток времени. Если вы делаете это через script, и даже если вы попытаетесь DM много из одного единственного ip-твиттера, просто BLOCK вы.