Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Java API for Social Media
From Agorava to Ωrkut
JustJava


               Werner Keil
           Antoine Sabot-Durand


             Sao Paulo, Brazil
                18 / 05 / 12
Our Goal

          A JAVA API FOR ACCESS TO
          SOCIAL NETWORKS

2   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Who am I?

                   Werner Keil



                                     Consultant – Coach
                                     Creative Cosmopolitan
                                     Open Source Evangelist
                                     Software Architect
                                     …
                    Twitter @wernerkeil


3   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Proliferation




4   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Proliferation of Social Media




5   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Social Gaga




6   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Apache Shindig
     • Open source implementation of OpenSocial & Gadgets
       specification
     • An Apache Software project
     • Available in Java & PHP
     • http://shindig.apache.org


It’s Goal:
“Shindig's goal was to allow new sites to start hosting social
apps in under an hour's worth of work"




 8   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
OpenSocial Container
    • Become an OpenSocial Container
     o Get Shindig (PHP or Java) or the Google implementation
         http://shindig.apache.org
     o Look at examples & documentation
         http://code.google.com/p/opensocial-
          resources/wiki/SampleApps

        •    The “official” OpenSocial
             implementation has
             shifted – from Shindig
             to Google Code



9   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
What Is a Gadget?




     Simple gadgets for getting a Grid proxy credential and
     running remote commands. Both run on my own
     Web server.
10   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Who uses OpenSocial
     •    MySpace
     •    Orkut
     •    Friendster
     •    Hi5




11   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Who does not use OpenSocial
•    Facebook
•    Twitter
•    LinkedIn
•    XING*
•    Yammer
•    Foursquare
•    Google+
•    ...




* Abandoned it for Security and other reasons

12   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
What’s said about OpenSocial
     • OpenSocial is what Google created for MySpace
       (Yammer CTO and co-founder Adam Pisoni)
     • Out of the box, most gadgets are publicly available content that
       do not require authentication and authorization.
       (ThoughtWorks Studios about OpemSocial gadgets)
     • OpenSocial is a specification that provides a standard way to
       share content between semi-trusted applications.
     • While initially proposed for public facing social networking
       sites, it has possibly more potential within the corporate firewall
       (ThoughtWorks Radar, March 2012)




13   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Portable Contacts
     • REST API for Person and Contacts
        • Open source implementation
     • Compatible with OpenSocial
        • http://portablecontacts.net




14   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
SocialSite – Sun’s approach to Social
Sun Microsystems
  • Socialsite: Shindig + gadget based UI written in Java
  • Open Source https://socialsite.dev.java.net/




 15   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Facebooks’ Query Language
     • All of the Facebook API is basically a set of
       wrappers around their SQL like FQL query
       language. So you can, if you prefer, make
       custom methods out of FQL query strings.
             var myQuery='SELECT name FROM user WHERE
             uid='+api.get_session().uid;
             api.fql_query(myQuery, getFQLResponse);


     getFQLResponse() is a developer-written callback function

     If it’s SQL like, could we use something like JPA around it?


16   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
DaliCore – History

           DaliCMS (2006): “Web 2.0 ready CMS”
           Open-source “CMS” with community features
           2008: integration with Shindig, provides
            OpenSocial Implementation (JavaScript code
            from Shindig, Java code in DaliCMS)
           Developed as Glassfish incubator project



17   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
DaliCore – CMS

    More than a CMS → DaliCore
    Adds functionality common to users, content
     and permissions on top of Java EE 6.
    Focus on Users and Permissions.
    In about every project that uses DaliCore,
     users should be able to login with existing
     credentials (Facebook, Twitter, Google
     Connect,...)
    Dali modules extend DaliCore
DaliCore – Connect

 public abstract class ExternalNetwork
     public abstract Response connect(String callback);
     public abstract ExternalToken callback(String
     requestToken, String verifier);
     public abstract OnlineAccount
     createOnlineAccount(ExternalToken accessToken) throws
     DaliCoreException;


    ExternalNetwork class is extended by
        FacebookExternalNetwork
        TwitterExternalNetwork
        GoogleExternalNetwork
DaliCore – Integrate

    The User concept in DaliCore can have 0 or
     more instances of “OnlineAccount”
    In projects created with DaliCore, the
     administrator/configurator decides what social
     networks are supported.
    Users can access all functionality using their
     social network credentials.
Seam Social – a bootstrap for the API
• A full CDI API to interact with Social Networks
• Developed by Antoine Sabot-Durand (one of the proposed co-
  Spec Leads)
• Independent of CDI implementation
• A helper for:
   o Consuming REST services
   o Consuming OAuth 1 and 2 services
   o Identification via OAuth
   o JSON binding of Social Services API
• Ready to adopt JSR 351, 353 and JSR 339 and maybe others
• Will move to Apache Delta Spike initiative during 2012


21   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Twitter4J – History

           Twitter4J is an unofficial Java library for
            the Twitter API.
            With Twitter4J, you can easily integrate your
            Java application with Twitter.
           Its author, Yusuke Yamamoto now officially
            working at Twitter. Designated to represent
            Twitter in Social JSR EG. Agorava


22   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Social Gagorava




23   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Agoravian
                                          LIKE




                                      SOCI




24   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Agorava – a kind of JCA for Social Media




25   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Agorava Socializer




26   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Agorava Socializer – Architecture
                                                                  Agorava Core

                     API („Spec“)                                                      CDI

                                                                Agorava Connectors

                          Facebook                                                   Twitter,…

                                                                Agorava Socializer

                   JSF Web App                                                         „RI“

27   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Mr. Agorava




               Birthday 18th May!
               FB: https://www.facebook.com/antoine.sabotdurand or @antoine_sd
28   © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
Let’s Socialize

DEMO
Q&A

AGORAVA AGORA!
Contact

                 Website: http://agorava.org

              GitHub: https://github.com/agorava

                         Google Group:
 https://groups.google.com/forum/?hl=de&fromgroups#!forum/java-
                               social

               Email: Java-social@catmedia.us

           Twitter: @Java_Social or @AgoravaProj

More Related Content

Java API for Social Media

  • 1. Java API for Social Media From Agorava to Ωrkut JustJava Werner Keil Antoine Sabot-Durand Sao Paulo, Brazil 18 / 05 / 12
  • 2. Our Goal A JAVA API FOR ACCESS TO SOCIAL NETWORKS 2 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 3. Who am I? Werner Keil Consultant – Coach Creative Cosmopolitan Open Source Evangelist Software Architect … Twitter @wernerkeil 3 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 4. Proliferation 4 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 5. Proliferation of Social Media 5 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 6. Social Gaga 6 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 7. Apache Shindig • Open source implementation of OpenSocial & Gadgets specification • An Apache Software project • Available in Java & PHP • http://shindig.apache.org It’s Goal: “Shindig's goal was to allow new sites to start hosting social apps in under an hour's worth of work" 8 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 8. OpenSocial Container • Become an OpenSocial Container o Get Shindig (PHP or Java) or the Google implementation  http://shindig.apache.org o Look at examples & documentation  http://code.google.com/p/opensocial- resources/wiki/SampleApps • The “official” OpenSocial implementation has shifted – from Shindig to Google Code 9 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 9. What Is a Gadget? Simple gadgets for getting a Grid proxy credential and running remote commands. Both run on my own Web server. 10 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 10. Who uses OpenSocial • MySpace • Orkut • Friendster • Hi5 11 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 11. Who does not use OpenSocial • Facebook • Twitter • LinkedIn • XING* • Yammer • Foursquare • Google+ • ... * Abandoned it for Security and other reasons 12 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 12. What’s said about OpenSocial • OpenSocial is what Google created for MySpace (Yammer CTO and co-founder Adam Pisoni) • Out of the box, most gadgets are publicly available content that do not require authentication and authorization. (ThoughtWorks Studios about OpemSocial gadgets) • OpenSocial is a specification that provides a standard way to share content between semi-trusted applications. • While initially proposed for public facing social networking sites, it has possibly more potential within the corporate firewall (ThoughtWorks Radar, March 2012) 13 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 13. Portable Contacts • REST API for Person and Contacts • Open source implementation • Compatible with OpenSocial • http://portablecontacts.net 14 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 14. SocialSite – Sun’s approach to Social Sun Microsystems • Socialsite: Shindig + gadget based UI written in Java • Open Source https://socialsite.dev.java.net/ 15 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 15. Facebooks’ Query Language • All of the Facebook API is basically a set of wrappers around their SQL like FQL query language. So you can, if you prefer, make custom methods out of FQL query strings. var myQuery='SELECT name FROM user WHERE uid='+api.get_session().uid; api.fql_query(myQuery, getFQLResponse); getFQLResponse() is a developer-written callback function If it’s SQL like, could we use something like JPA around it? 16 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 16. DaliCore – History  DaliCMS (2006): “Web 2.0 ready CMS”  Open-source “CMS” with community features  2008: integration with Shindig, provides OpenSocial Implementation (JavaScript code from Shindig, Java code in DaliCMS)  Developed as Glassfish incubator project 17 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 17. DaliCore – CMS  More than a CMS → DaliCore  Adds functionality common to users, content and permissions on top of Java EE 6.  Focus on Users and Permissions.  In about every project that uses DaliCore, users should be able to login with existing credentials (Facebook, Twitter, Google Connect,...)  Dali modules extend DaliCore
  • 18. DaliCore – Connect public abstract class ExternalNetwork public abstract Response connect(String callback); public abstract ExternalToken callback(String requestToken, String verifier); public abstract OnlineAccount createOnlineAccount(ExternalToken accessToken) throws DaliCoreException;  ExternalNetwork class is extended by  FacebookExternalNetwork  TwitterExternalNetwork  GoogleExternalNetwork
  • 19. DaliCore – Integrate  The User concept in DaliCore can have 0 or more instances of “OnlineAccount”  In projects created with DaliCore, the administrator/configurator decides what social networks are supported.  Users can access all functionality using their social network credentials.
  • 20. Seam Social – a bootstrap for the API • A full CDI API to interact with Social Networks • Developed by Antoine Sabot-Durand (one of the proposed co- Spec Leads) • Independent of CDI implementation • A helper for: o Consuming REST services o Consuming OAuth 1 and 2 services o Identification via OAuth o JSON binding of Social Services API • Ready to adopt JSR 351, 353 and JSR 339 and maybe others • Will move to Apache Delta Spike initiative during 2012 21 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 21. Twitter4J – History  Twitter4J is an unofficial Java library for the Twitter API. With Twitter4J, you can easily integrate your Java application with Twitter.  Its author, Yusuke Yamamoto now officially working at Twitter. Designated to represent Twitter in Social JSR EG. Agorava 22 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 22. Social Gagorava 23 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 23. Agoravian LIKE SOCI 24 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 24. Agorava – a kind of JCA for Social Media 25 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 25. Agorava Socializer 26 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 26. Agorava Socializer – Architecture Agorava Core API („Spec“) CDI Agorava Connectors Facebook Twitter,… Agorava Socializer JSF Web App „RI“ 27 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 27. Mr. Agorava Birthday 18th May! FB: https://www.facebook.com/antoine.sabotdurand or @antoine_sd 28 © 2010-2012 Werner Keil, Antoine Sabot-Durand and Others
  • 30. Contact Website: http://agorava.org GitHub: https://github.com/agorava Google Group: https://groups.google.com/forum/?hl=de&fromgroups#!forum/java- social Email: Java-social@catmedia.us Twitter: @Java_Social or @AgoravaProj