web-dev-qa-db-fra.com

Configuration de l'API Twitter, obtention des derniers tweets

Je suis complètement nouveau dans l'utilisation de Twitter en général et je n'ai jamais intégré de "derniers tweets" sur aucun projet. J'essaie simplement d'intégrer les 3-4 derniers tweets dans le pied de page du site sans fonctionnalités supplémentaires de fonctionnalité. Je fais des recherches sur la façon de faire cela depuis un certain temps maintenant et j'ai des problèmes.

J'ai ajouté l'extrait de code suivant au projet, ce qui fonctionne assez bien, cependant, je ne sais pas comment mettre à jour l'extrait de sorte qu'il utilise mon compte Twitter au lieu de celui avec lequel il est configuré.

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

De plus, je continue de lire que l'API Twitter la plus utilisée cessera bientôt de fonctionner parce que Twitter veut que les gens utilisent les leurs, par opposition aux tiers.

Je ne sais pas comment procéder à partir d'ici. J'apprécierais grandement toute suggestion à cet égard. Pour récapituler, tout ce que j'essaie de faire est de récupérer les 3-4 derniers tweets de mon compte.

merci d'avance!

27
AnchovyLegend

Donc, vous ne voulez vraiment plus faire ce côté client. (Je viens de parcourir de nombreux documents et les développeurs suggèrent de faire tout oAuth côté serveur)

Qu'as tu besoin de faire:

Tout d'abord : inscrivez-vous sur https://dev.Twitter.com , et faites une nouvelle demande.

Deuxième : REMARQUE: votre clé/secret client avec jeton d'accès/secret

Troisième : Téléchargez Twitter oAuth Library (Dans ce cas, j'ai utilisé le PHP Bibliothèque https://github.com/abraham/twitteroauth , bibliothèque supplémentaire située ici: https://dev.Twitter.com/docs/Twitter-libraries )

Quatrième : (Si vous utilisez php) Assurez-vous que cURL est activé, si votre exécution sur une LAMPE voici la commande dont vous avez besoin:

Sudo apt-get install php5-curl

Cinquième : Créez un nouveau fichier PHP et insérez ce qui suit: Merci à 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   
?>

Et boum , vous avez terminé. Je sais que ce n'est pas une solution js pure, mais encore une fois en lisant les nouveaux documents de l'API Twitter 1.1, ils ne veulent vraiment pas que vous fassiez ce site client. J'espère que ça aide!

62
Starboy

Comment obtenir les derniers tweets de l'utilisateur avec le noyau PHP uniquement (pas de bibliothèque CURL ou Twitter oAuth bibliothèque nécessaire)):

  1. Enregistrez votre application/page Web https://apps.Twitter.com (Vous devrez peut-être également vérifier le numéro de mobile de votre compte personnel)

  2. Remarque Consumer Key et Consumer Secret

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

Testé avec XAMPP pour Windows et l'installation par défaut de Centos6 (PHP 5.3)

Le problème le plus probable est que openssl n'est pas activé dans php.ini

Pour corriger, vérifiez si la ligne extension = php_openssl.dll ou extension = php_openssl.so est présente et non commentée dans php.ini

25
Rauli Rajande