19
gplus-to-twitter Fabien Baligand

Présentation de gplus to-twitter

Embed Size (px)

DESCRIPTION

Présentation de l'application http://gplus-to-twitter.appspot.com, qui est un service d'auto-publication des posts publiques d'un compte Google+ vers un compte Twitter

Citation preview

Page 1: Présentation de gplus to-twitter

gplus -to-twitter

Fabien Baligand

Page 2: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

2

gplus -to-twitter, c’est quoi ?

� Une application sur AppEngine :

� http://gplus-to-twitter.appspot.com

� Publie automatiquement toutes les 5 minutes, pour chaque compte configuré, les postspubliques Google+ vers Twitter

Page 3: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

3

pourquoi gplus -to-twitter ?

� Parce que je n’ai pas trouvé d’outil équivalent

� Pour le petit challenge technique

� Pour découvrir l’API Google+ dès sa sortie

� Pour avoir une alternative à Google Reader -> Partag er -> FriendFeed -> Twitter :

� Reader -> Partager -> Google+ -> gplus-to-twitter -> Twitter

� Et parce que c’est cloud, c’est fun et c’est geek ;)

Page 4: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

4

Outils / Technos utilis és

� Google+ API / google-api-java-client

� Twitter4j

� OAuth 2

� Google App Engine

� Cron / Servlet / JSP / DataStore

� Objectify

� Jsoup

Page 5: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

5

Architecture

GoogleApp Engine

GoogleApp Engine

/admin/gplus-to-twitter/admin/gplus-to-twitter

Cron / toutes les 5 min1

DataStore« Account »

DataStore« Account »

2 Objectify

Google+REST API

Google+REST API

TwitterREST API

TwitterREST API

3google-api-java-client

4

Jsoup (HTML to TEXT)

5twitter4j

Page 6: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

6

Google+ API / google -api-java -client

� Google+ API fournit les APIs REST suivantes:

� Consulter le profil d’un utilisateur

� Lister les posts publics d’un utilisateur

� Recherche full-text de profils ou de posts

� Sécurité

� Authentification par Google Key (accès aux données publiques)

� Authentification par OAuth 2 (accès aux données privées)

� google-api-java-client :

� Ensemble de librairies java wrapant les services REST proposés par les Google APIs

� https://developers.google.com/+/api/

� http://code.google.com/p/google-api-java-client/

Page 7: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

7

Google+ API – récupérer les posts publics

Plus plus = Plus.builder(new NetHttpTransport(), new GsonFactory())

.build();

ActivityFeed feed = plus.activities().list(googlePlusUserId, "public").execute();

for (Activity activity : feed.getItems()) {String content = activity.getPlusObject().getContent();System.out.println(content);

}

Page 8: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

8

Google+ API – utiliser une API key

1. Accéder à https://code.google.com/apis/console/

2. Créer un nouveau projet

3. Choisir les services Google auxquels accède le proj et

4. Récupérer la clé générée dans l’onglet « API Access »

5. Utiliser la clé pour initialiser le client Google+ :Plus plus = Plus.builder(new NetHttpTransport(), new GsonFactory()).setJsonHttpRequestInitializer(

new JsonHttpRequestInitializer() {public void initialize(JsonHttpRequest request) {

((PlusRequest)request).setKey(GOOGLE_API_KEY);}})

.build();

Page 9: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

9

Twitter4j

� Twitter4j permet d’effectuer les actions suivantes sur un compte Twitter :

� Lire les tweets de la timeline

� Consulter le profil, les suivants et suivis

� Mettre à jour le profil, s’abonner à de nouvelles timelines

� Poster des tweets

� Sécurité des actions :

� En lecture : aucune authentification

� En écriture : authentification OAuth 2

� http://twitter4j.org

Page 10: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

10

Twitter4j – lire une timeline

Twitter twitter = new TwitterFactory().getInstance();

List<Status> timeline = twitter.getUserTimeline("fbaligand");

for (Status status : timeline) {System.out.println(status.getText());

}

Page 11: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

11

Twitter4j – poster un tweet

AccessToken accessToken = new AccessToken(token, tokenSecret);

Twitter twitter = twitterFactory.getInstance(accessToken);

twitter.updateStatus("hello twitter!");

Page 12: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

12

OAuth 2 – Concepts

� Permet de fournir un jeton d’accès à une application identifiée pour accéder à son compte, sans fournir son mot de passe

� Permet de révoquer à tout moment un jeton accordé à une application donnée ou de le générer à nouveau

Page 13: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

13

OAuth 2 – Mise en oeuvre

1. On déclare une nouvelle application sur https://dev.twitter.com

2. Une application possède alors une clé d’identificati on et un mot de passe

3. On configure twitter4j avec ces identifiants d’application

4. Via twitter4j, on génère un jeton de requête

5. L’utilisateur cible accepte ce jeton de requête via une URL d’autorisation

6. Via twitter4j, on récupère le jeton d’accès résulta t (et le mot de passe associé)

Page 14: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

14

OAuth 2 – Configuration

� Configuration de /twitter4j.properties :oauth.consumerKey=<appConsumerKey>

oauth.consumerSecret=<appConsumerSecret>

� Configuration de l’instance Twitter :AccessToken accessToken =

new AccessToken(token, tokenSecret);

Twitter twitter = twitterFactory.getInstance(accessToken);

Page 15: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

15

Google App Engine

� Éléments de l’application GAE :

� Une servlet d’envoi des posts G+ vers twitter (appelée toutes les 5 minutes par cron)

� Un formulaire JSP de saisie et une servlet de création d’un nouveau compte Google+ / Twitter

� Une entité « Account »

� Sécurité : Les 2 servlets et la JSP ne sont accessibles que par l’administrateur de l’application et par cron

Page 16: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

16

Google App Engine - Cron

� Fichier /WEB -INF/cron.xml :<cronentries>

<cron><url>/admin/gplus-to-twitter</url><description>a description</description><schedule>every 5 minutes</schedule>

</cron></cronentries>

Page 17: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

17

Objectify

� Framework de persistance sur le DataStorede Google App Engine

� Très simple à utiliser et adapté à une base NoSQL (contrairement à JDO et JPA)

� Introduction à Objectify :

� Présentation de Patrice de Saint Steban

� Site du projet :

� http://code.google.com/p/objectify-appengine/

Page 18: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

18

Jsoup

� Librairie Java de parsing HTML :

� transforme du HTML en texte simple

� Trouve et extrait une liste de noeuds HTML grâce à un sélecteur CSS jQuery

� Exemple de code :String text =

Jsoup.parse("<span><i>un texte</i></span>").text();

� Site du projet :

� http://jsoup.org/

Page 19: Présentation de gplus to-twitter

Cliquez pour ajouter un titre

• Cliquez pour ajouter un plan

19

Conclusion

� L’étape d’après : ouvrir l’application à tout utilisateur voulant s’enregistrer

� Limite bloquante : le quota de Google+ API limité à 1000 requêtes par jour

� http://gplus-to-twitter.appspot.com