Julien Hatzig

Technologies .Net

[C#-ASP.NET] Prise en main de l’API Twitter

Aujourd’hui nous allons vous montrer comment mettre en place dans une application de type ASP/C# une connexion à Twitter grâce à l’API Twitter et Linq2Twitter.

 

  • Etape n° 1 : Enregistrer votre application sur Twitter
    La première étape est d’enregistrer votre application web sur twitter sur dev.twitter.com
Votre application doit être de type Broswer avec un accès Read & Write.
Le champ callback url permet – une fois l’application autorisée sur le profil de l’utilisateur - de revenir sur votre application automatiquement. Attention pour vos applications locales, le champ ne permet pas de saisir localhost, pour cela vous pouvez saisir http://127.0.0.1/

 

  • Etape n° 2 : Telecharger Linq2Twitter
C’est l’une des étapes les plus simples !
Linq2Twitter (LINQ to Twitter) est une bibliothèque C# Open-Source qui est un fournisseur LINQ pour l’API Twitter. Cela rend vraiment facile et intuitif à intégrer des appels Twitter dans votre ASP.NET, ASP.NET MVC, Winform, et d’autres applications. NET.
Vous pouvez la télécharger sur la page CodePlex : ici
Ensuite, ajouter la DLL LinqToTwitter a votre projet (Clic droit // Ajouter une référence // Parcourir)

 

  • Etape n° 3 : L’authentification
OAuth est une façon de permettre à des applications tierces d’utiliser votre compte sans pour autant avoir accès a vos identifiants.
Pour faire simple, une application tierce qui souhaite accéder à votre compte Twitter utilise l’authentification OAuth, cela va effectuer une redirection vers une page d’autorisation sur Twitter, où vous avez la possibilité ou non de donner la permission à l’application tierce d’utiliser votre compte, sans qu’une communication de vos identifiants et mot de passe ne soit echangés.

 

  • Etape n° 4 : Un peu de code
Web.Config :
Une fois votre application tierce enregistrée sur twitter, vous obtenez une clé et un code secret
Je vous conseille vivement de l’enregistrer dans votre web.config pour pouvoir l’utiliser dans l’ensemble de votre projet.

  
      
      
  
Votre page de login a l’application twitter :

private WebAuthorizer auth;

    protected void Page_Load(object sender, EventArgs e)
    {
        IOAuthCredentials credentials = new SessionStateCredentials();

        if (credentials.ConsumerKey == null || credentials.ConsumerSecret == null)
        {
            //Récupere les ConsumerKey et ConsumerSecret
            credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
            credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
        }

        auth = new WebAuthorizer
        {
            Credentials = credentials,
            PerformRedirect = authUrl => Response.Redirect(authUrl)
        };

        if (!Page.IsPostBack)
        {
            auth.CompleteAuthorization(Request.Url);
        }

        if (string.IsNullOrWhiteSpace(credentials.ConsumerKey) ||
            string.IsNullOrWhiteSpace(credentials.ConsumerSecret))
        {
            lblInfo.Text = "Configurer la ConsumerKey & ConsumerSecret dans votre web.config";
        }
        else if (auth.IsAuthorized)
        {
            screenNameLabel.Text = "Connecter en tant que  " + auth.ScreenName;
            lblInfo.Text = "";            
        }
        else {     
            lblInfo.Text = "Vous n’avez pas d’authorisation de Twitter.";
        }

    }

protected void BTNAutoriseCnx_Click(object sender, EventArgs e)
    {
        auth.BeginAuthorization(Request.Url);
    }

 

  • Etape n ° 5 : Requetes simples sur l’API Twitter avec Linq2Twitter
Liste des status et retweet du compte :

twitterCtx = new TwitterContext(auth);
var tweets =   from tweet in twitterCtx.Status where tweet.Type == StatusType.Friends select tweet;
Mettre a jour le statut :

twitterCtx.UpdateStatus(“Votre status mis à jour”);
Retweeter une personne :

twitterCtx = new TwitterContext(auth);
var retweet = twitterCtx.Retweet(txtStatusId.Text);

 

  • Etape n° 6 : Erreurs 401, 403
Les erreurs 401 : En local vous risquez de trouver des erreurs 401 ou 403 assez souvent, car l’API est plus lente a répondre que le local, vous pouvez le gérer grace a Thread.Sleep(10000), ou une boucle while a vous de choisir !
Les erreurs 403 : Si vous rafraichissez trop de fois (Exemple toutes les 10secondes) a partir de 20 min, le serveur vous renvoie une erreur 403. Pensez donc a augmenter l’intervalle entre les rafraichissements.

 

  • Etape n° 7 : Récupérer 30, 100 , 200 tweets
Par défaut, l’API twitter ne vous retourne qu’une vingtaine de tweets, probablement pour ne pas surcharger le serveur. A l’aide de cette méthode vous pouvez donc récupérer le nombre de tweets voulus
Pour récuperer 100 tweets :
                var tweets = (from tweet in twitterCtx.Status
                              where tweet.Type == StatusType.Home
                              && tweet.Count == 100
                              select tweet).ToList();

L’article est mis à jour régulièrement.
Pour plus d’infos, suivez moi sur Twitter : @Full62fr

22 Responses to “[C#-ASP.NET] Prise en main de l’API Twitter”

  1. Bonjour à Tous,
    qlq’un a une idée de la manière de mettre ses tweets recuperés en local dans une base de donnée SQL

    Commentaire by @Brice — 30/11/1999 @ 2 h 00 min

  2. Je ne comprend pas certaines choses. Tes variables de types WebAuthorizer ou IOAuthCredentials pour les utiliser tu dois utiliser d’autres librairies puisque celles ci ne sont pas dans linqtotwitter?

    Commentaire by NigNig — 30/11/1999 @ 2 h 00 min

  3. j’ai rien dit, mes libraries n’étaient pas à jour.

    Commentaire by NigNig — 30/11/1999 @ 2 h 00 min

  4. Bonjour,
    Merci pour ce blog. je suis bloqué au niveau de l’étape numéro 3 et 4.
    Je ne sais pas comment créer la page d’authentification.
    Pouvez-vous m’aider? Merci

    Commentaire by Joe — 30/11/1999 @ 2 h 00 min

  5. Merci de m’avoir répondu aussi vite.
    J’ai des erreurs WebAuthorizer, IOAuthCredentials et SessionStateCredentials(), twitterCtx, TwitterContext;
    Quelle librairie vais-je utiliser? en plus dans quels fichiers dois-je mettre le code de l’étape 5? Encore merci

    Commentaire by Joe — 30/11/1999 @ 2 h 00 min

  6. j’aurai aimer savoir comment faire la suppression d’un Tweet?, et Merci pour le tuto !!

    Commentaire by rockshow — 30/11/1999 @ 2 h 00 min

  7. J’ai trouvé, les informations ne sont pas dans tweet.User.ScreenName mais dans tweet.User.Identifier.ScreenName, voilà si ça peut aider.

    Commentaire by Croupion — 30/11/1999 @ 2 h 00 min

  8. Il faut rediriger tes requêtes http:// vers http://www. car ton site n’est accessible qu’avec les 3 www,

    http://leblog-it.fr ne fonctionne pas … et c’est pas cool !

    Commentaire by supinfo — 06/04/2011 @ 7 h 48 min

  9. C’est prévu ! Je fais ça ce midi.

    Commentaire by Julien Hatzig — 06/04/2011 @ 8 h 13 min

  10. Tu pourrais expliquer dans l’étape N4:
    PerformRedirect = authUrl => Response.Redirect(authUrl)
    Et je crois que t’avais dit que la page devais hérité d’une autre non?
    Merci

    Commentaire by SUPINFO — 07/04/2011 @ 9 h 12 min

  11. Bon au final le com ma donner la reponse le « > » c’est >

    Commentaire by SUPINFO — 07/04/2011 @ 9 h 33 min

  12. auth = new WebAuthorizer
    {
    Credentials = credentials,
    PerformRedirect = authUrl => Response.Redirect(authUrl)
    };

    Cette étape de permet d’initialiser ta variable auth,
    - La partie Credentials récupère ta consumerkey et ta consumersecret
    - La partie PerformRedirect va chercher dans la DLL les liens pour se connecter à l’api twitter.

    Par exemple pour renvoyer l’utilisateur vers la page d’autorisation => https://api.twitter.com/oauth/authorize.

    L’action effectuée ici est : ==> Response.Redirect(« https://api.twitter.com/oauth/authorize ») qui te permet d’autoriser ou non l’application a utiliser tes informations de compte. Ensuite grâce à la callback url, l’api te redirige vers ton localhost et l’exécution peut reprendre.

    Commentaire by Julien Hatzig — 07/04/2011 @ 9 h 46 min

  13. Un simple control asp button est suffisant. Tu inseres le code et il te renvoies automatiquement sur l’authentification de twitter. Enfin grace a la callback url tu reviens sur ta webapp

    Commentaire by Julien Hatzig — 24/04/2011 @ 22 h 06 min

  14. tu as bien mis en haut de page : using linqtotwitter; ?!

    Commentaire by Julien Hatzig — 25/04/2011 @ 8 h 56 min

  15. tu as une methode dans le context qui s’appelle destroystatut ac en parametres le tweet a supprimer.

    Commentaire by Julien Hatzig — 25/04/2011 @ 9 h 02 min

  16. Oui j’ai bien mis using linqtotwitter; mais malheureusement j’ai ces erreurs WebAuthorizer, IOAuthCredentials et SessionStateCredentials().
    Après le téléchargement, il y a plusieurs dossier, quelle DLL LinqToTwitter vais-je choisir?

    Commentaire by Joe — 25/04/2011 @ 11 h 33 min

  17. est il normal que :

    var tweets = from tweet in context.Status where tweet.Type == StatusType.Friends select tweet;

    semble renvoyer un champs vide pour screenName et UserID. Des informations qui m’intéresse je ne récupère que :

    tweet.StatusID;
    tweet.CreatedAt;
    tweet.Text;

    et je ne trouve rien pour l’url de l’image du profil.

    ?

    Commentaire by Croupion — 25/04/2011 @ 17 h 05 min

  18. Le fichier binaries sur le site officiel LinqTotwitter te donnera la bonne DLL LinqTotwitter !

    Commentaire by Julien Hatzig — 25/04/2011 @ 17 h 09 min

  19. L’url pour l’image de profil se trouve dans : tweet.user.ImageURL un truc du genre, de même pour le screenname.

    Commentaire by Julien Hatzig — 25/04/2011 @ 17 h 11 min

  20. effectivement tweet.user.ImageURL contient l’url du profil, ceci dit, tweet.user.screenName ne renvoie rien, tweet.user.id et tweet.user.userID non plus. J’ai beau le tourner dans tous les sens je n’obtiens jamais ces informations. Du coup j’en suis à me demander si comme pour des requêtes SQL il ne faudra pas rajouter un « from User » dans « var tweets = from tweet in context.Status where tweet.Type == StatusType.Friends select tweet; » mais je sèche.

    Commentaire by Croupion — 25/04/2011 @ 19 h 25 min

  21. Bonsoir,
    Merci pour ce super tuto. Tout marche mais j’ai du mal à afficher les tweets(étapes 5 var tweets).
    Merci

    Commentaire by coffi — 25/04/2011 @ 22 h 36 min

  22. Tu l’affiches dans une gridview, listview, avec en datasource ta liste de tweets que tu as recupérés !

    Commentaire by Julien Hatzig — 26/04/2011 @ 14 h 34 min

Flux RSS des commentaires de cet article. TrackBack URL

Leave a Response

Vous devez être connecté pour rédiger un commentaire.