2013-06-11 17 views
27

Sono completamente nuovo nell'usare Twitter in generale e non ho mai incorporato "ultimi tweet" su alcun progetto. Sto semplicemente cercando di incorporare i 3-4 tweet più recenti sul footer del sito senza funzionalità aggiuntive di funzionalità. Ho cercato come fare questo per un bel po 'di tempo e avere qualche problema.Impostazione dell'API di Twitter, ottenendo gli ultimi tweet

Ho aggiunto il seguente snippet di codice al progetto, che funziona abbastanza bene, tuttavia, non sono sicuro di come aggiornare lo snippet in modo che utilizzi il mio account Twitter anziché quello con cui è stato impostato.

<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> 

Inoltre, continuo a leggere che il più comunemente usato Twitter API smetterà di funzionare presto, perché Twitter vuole persone di utilizzare il proprio, al contrario di terzi.

Non so come procedere da qui. Apprezzerei molto ogni suggerimento in merito. Per riassumere, tutto quello che sto cercando di fare è prendere gli ultimi 3-4 tweet dal mio account.

molte grazie in anticipo!

+0

Se hai bisogno di una soluzione solo javascript, puoi usare Twitter-Post-Fetcher di Jason Mayes http://jasonmayes.com/ progetti/twitterApi/Tra qualche giorno proverò per un nuovo lavoro, oggi sembra essere ag ottimo modo per chi non può lavorare sul lato server. –

risposta

59

Quindi davvero NON si vuole più fare questo lato client. (Appena passato attraverso numerosi documenti, e sviluppatori suggeriscono di fare tutto sul lato server oAuth)

Quello che dovete fare:

Prima: iscriversi sul https://dev.twitter.com, e fare una nuova applicazione.

Seconda: NOTA: La vostra chiave Consumer/segreta con token di accesso/Segreto

Terzo: Scarica Twitter OAuth Library (In questo caso ho usato il PHP Biblioteca https://github.com/abraham/twitteroauth, libreria aggiuntiva trova qui: https://dev.twitter.com/docs/twitter-libraries)

Quarto: (Se si usa PHP) assicurarsi che cURL è abilitato, se il vostro in esecuzione su una lampada ecco il comando è necessario:

sudo apt-get install php5-curl 

Quinto: Fai un nuovo file PHP e inserire il seguente: Grazie a Tom Elliot http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/

<?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 
?> 

e boma, il gioco è fatto. So che questa non è una soluzione js pura, ma di nuovo leggendo attraverso i nuovi documenti di API 1.1 di Twitter che NON VOGLIONO volere che tu faccia questo sito client. Spero che questo aiuti!

+0

Grazie per la risposta! È molto più lavoro del previsto per ottenere 3 tweet, ma devo fare quello che devo fare;) Darò questa prova e controllo. – AnchovyLegend

+0

Quando dici "registrati su dev.twitter.com" - devi farlo come account da cui vuoi ricevere i tweet (acc come il mio cliente) o solo un account (ad es. Il mio account personale)? – NickG

+0

@NickG no, deve solo essere un account Twitter. È spiegato nel collegamento nel quinto passaggio sopra – Mac

-14

In realtà Twitter ha molte restrizioni, in quanto vi è molta concorrenza da parte di aziende come Nike e altri. La lettura di tweet è limitata nel senso che se stai leggendo attraverso l'ultima API è in realtà un po 'indietro nel tempo.

Hanno anche controllato il ritardo DM, il che significa che non è possibile DM in modo istantaneo, anche se lo si fa, l'altra parte riceverà solo dopo X quantità di tempo. Se lo fai attraverso lo script, e anche se provi a DM molto da un singolo ip twitter semplicemente BLOCCHETTI.

22

Come arrivare ultimi tweet di utenti con funzionalità di base di PHP solo (senza CURL o libreria Twitter OAuth necessario):

  1. registrare l'applicazione/pagina Web https://apps.twitter.com (potrebbe essere necessario verificare il tuo account cellulare personale numero troppo)

  2. nota chiave e il segreto dei consumatori

  3. codice 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); 
    

Testato con XAMPP per l'installazione predefinita di Windows e Centos6 (PHP 5.3)

più probabile problema di questo potrebbe essere che OpenSSL non è abilitato in php.ini

Per risolvere verificare se extension = php_openssl.dll o extension = php_openssl.so line è presente e non commentata in php.ini

+0

Grazie @Rauli! Invieresti di più se potessi :) Nota agli altri: attualmente i token di accesso di Twitter non scadono: http://stackoverflow.com/questions/8357568/do-twitter-access-token-expire, https: // dev. twitter.com/oauth/overview/faq – Ben

Problemi correlati