SlideShare a Scribd company logo
Server-side OpenSocial Java programming
Chris Schalk, Google Developer Advocate

10/04/2009
Agenda

    • OpenSocial Background
    • OAuth Background
    • OpenSocial Java Client Libraries
    • 2-legged and 3-legged OAuth Access
    • Connecting to a Google Friend Connect site




2
OpenSocial Background




3                           3
What is OpenSocial?




    “OpenSocial defines a common set of APIs based on Open Standards
    for building social applications across multiple websites”




4
What is OpenSocial?




                          Before OpenSocial…




5
What is OpenSocial?




                          Standards Based




6
What is OpenSocial?




7
Who owns OpenSocial?




                   ?



8
Who owns OpenSocial?




                            ?       No!
      OpenSocial is managed under the auspices of the
      “OpenSocial Foundation” - http://www.opensocial.org

9
Who's Using it?




                       and many more...
10
Who's Using it?




11
OpenSocial Roadmap


     • Version 0.5 was released in a “developer release” on Nov
     1st 2007.
         • First “sandbox” was made available on Orkut

     • Version 0.6 was released in December 2007
        • Initial version of Shindig server software was launched as Apache
        incubator project
        • Other sandboxes came live - Hi5, Ning, Plaxo …

     • Version 0.7 (production) was released in January 2008
        • MySpace, Hi5, Orkut began running 0.7



12
OpenSocial Roadmap


     • Version v0.8/0.8.1
        • Released in late 2008

     • Contains a RESTful protocol, RPC protocol

     • OpenSocial Client Libraries launched in Dec 08

     • Specification:
     http://www.opensocial.org/Technical-Resources/opensocial-spec-v081




13
OpenSocial 0.9 - Current

     • Key Goal:
        – Enable a faster development experience that is both secure and
          efficient


     Core principles:
     • Client-side and server-side processing
     • Standard set of tags with extensibility model
        – Example: <os:ShowPerson>




14
Where can you find info on OpenSocial?


      http://wiki.opensocial.org




15
OAuth Background




16                      1
                        6
OAuth 101

     What is OAuth?

       • A standard, open protocol for secure API
       authorization for :
          – Desktop
          – Web
          – Mobile
       • OAuth provides an API to access to secure data
       while protecting account credentials.
       • More info:
          http://oauth.net


17
OpenSocial Java client libraries




18                                      1
                                        8
Introducing the OpenSocial Client Libraries


      A set of client libraries for that enable
      direct communication to an OpenSocial
      server.


     • Client libraries exist for PHP, Ruby, Python and Java
     • Supports both REST and RPC protocols
     • Documentation Wiki pages
     • Sample applications provided



                  http://code.google.com/p/opensocial-php-client
                  http://code.google.com/p/opensocial-ruby-client
                  http://code.google.com/p/opensocial-python-client
                  http://code.google.com/p/opensocial-java-client


19                                                                    19
RESTful and RPC protocols
     Sample: Using the OpenSocial client library to Fetch a user’s friends


      OpenSocialClient c = new OpenSocialClient("myhost.com");

       c.setProperty(OpenSocialClient.Properties.REST_BASE_URI, "http://localhost:8080/social/rest/");

       try {
         OpenSocialPerson p = c.fetchPerson("john.doe");
         System.out.println(p.getDisplayName());

           Collection<OpenSocialPerson> friends = c.fetchFriends("john.doe");
           for (OpenSocialPerson friend : friends) {
             System.out.println(friend.getDisplayName());
           }

       } catch (Exception e) {

       }




20
Demonstration: Working with the OpenSocial Java
     client library




21                                                 21
2-legged and 3-legged OAuth access




22                                   2
                                     2
Demonstration: Connecting to an OpenSocial
      container using 2-legged OAuth




                                           (2-legged)




     http://code.google.com/p/opensocial-java-client/wiki/TwoLeggedOAuthJava

23                                                                   23
Examining 2-legged OAuth access

     • Does not offer universal access to the container
        – Specifically tied to a single application installed on the container
        – Uses hardcoded token values
            • Consumer Key
            • Consumer Secret

     • Application security is left to the calling application
     • Pros:
        – Technically easy to implement
        – Good for background data fetch
     • Cons:
        – Can only access social data associated with single application on
           the container
        – Security can be compromised if Consumer key/secret obtained

24
Demonstration: Connecting to an OpenSocial
      container using 3-legged OAuth




                                     (3-legged)




     http://wiki.opensocial.org/index.php?title=Social_Website_Tutorial

25                                                                        25
Examining 3-legged OAuth access




26
Examining 3-legged OAuth access

     • Offers universal access to the container
        – User provides their own credentials to container to allow access
          to data


     • Application security is entirely under control of container
     • Pros:
        – Not hardcoded to specific application since user provides
          credentials, so access can be for anyone
     • Cons:
        – Always have to go through access request step
            • “Doing the Dance…”
        – Not meant for automated data transactions




27
Connecting to a Google Friend
     Connect Site




28                                   2
                                     8
Demonstration: Connecting to Google Friend Connect
     from an independent website




                                 ‘fcauth’ security token




                    http://plane-crazy.appspot.com

29                                                         29
Useful Links

 OpenSocial Homepage & specification:          http://www.opensocial.org

 OAuth website:
   • http://oauth.net

 2 legged OAuth tutorial (in the wiki):
     • http://code.google.com/p/opensocial-java-client/

 3 legged OAuth tutorial: “social website tutorial”:
     • http://wiki.opensocial.org/index.php?title=Social_Website_Tutorial

 Google Friend Connect:
   • http://google.com/friendconnect
   • http://code.google.com/apis/friendconnect

 Plane Crazy example app:
    • http://plane-crazy.appspot.com



30
Questions




                 Q&A

                       Thank You!


31

More Related Content

What's hot (19)

Web Server - Internet Applications
Web Server - Internet ApplicationsWeb Server - Internet Applications
Web Server - Internet Applications
sandra sukarieh
 
Apache web server
Apache web serverApache web server
Apache web server
Rishabh Bahukhandi
 
SERVER SIDE PROGRAMMING
SERVER SIDE PROGRAMMINGSERVER SIDE PROGRAMMING
SERVER SIDE PROGRAMMING
Prabu U
 
Server side programming
Server side programming Server side programming
Server side programming
javed ahmed
 
Server Side Programming
Server Side ProgrammingServer Side Programming
Server Side Programming
Milan Thapa
 
Web Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server MaintenanceWeb Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server Maintenance
Port80 Software
 
Web Server Technologies I: HTTP & Getting Started
Web Server Technologies I: HTTP & Getting StartedWeb Server Technologies I: HTTP & Getting Started
Web Server Technologies I: HTTP & Getting Started
Port80 Software
 
Web server
Web serverWeb server
Web server
Touhid Arastu
 
C# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENTC# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENT
Dr. Awase Khirni Syed
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
webhostingguy
 
Web servers (l6)
Web servers (l6)Web servers (l6)
Web servers (l6)
Nanhi Sinha
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
Maarten Balliauw
 
Web server administration
Web server administrationWeb server administration
Web server administration
sawsan slii
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUX
webhostingguy
 
Web Server(Apache),
Web Server(Apache), Web Server(Apache),
Web Server(Apache),
webhostingguy
 
Apache web server
Apache web serverApache web server
Apache web server
Sabiha M
 
Web Servers (ppt)
Web Servers (ppt)Web Servers (ppt)
Web Servers (ppt)
webhostingguy
 
Excellent rest using asp.net web api
Excellent rest using asp.net web apiExcellent rest using asp.net web api
Excellent rest using asp.net web api
Maurice De Beijer [MVP]
 
Apache server configuration & optimization
Apache server configuration & optimizationApache server configuration & optimization
Apache server configuration & optimization
Gokul Muralidharan
 
Web Server - Internet Applications
Web Server - Internet ApplicationsWeb Server - Internet Applications
Web Server - Internet Applications
sandra sukarieh
 
SERVER SIDE PROGRAMMING
SERVER SIDE PROGRAMMINGSERVER SIDE PROGRAMMING
SERVER SIDE PROGRAMMING
Prabu U
 
Server side programming
Server side programming Server side programming
Server side programming
javed ahmed
 
Server Side Programming
Server Side ProgrammingServer Side Programming
Server Side Programming
Milan Thapa
 
Web Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server MaintenanceWeb Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server Maintenance
Port80 Software
 
Web Server Technologies I: HTTP & Getting Started
Web Server Technologies I: HTTP & Getting StartedWeb Server Technologies I: HTTP & Getting Started
Web Server Technologies I: HTTP & Getting Started
Port80 Software
 
C# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENTC# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENT
Dr. Awase Khirni Syed
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
webhostingguy
 
Web servers (l6)
Web servers (l6)Web servers (l6)
Web servers (l6)
Nanhi Sinha
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
Maarten Balliauw
 
Web server administration
Web server administrationWeb server administration
Web server administration
sawsan slii
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUX
webhostingguy
 
Web Server(Apache),
Web Server(Apache), Web Server(Apache),
Web Server(Apache),
webhostingguy
 
Apache web server
Apache web serverApache web server
Apache web server
Sabiha M
 
Apache server configuration & optimization
Apache server configuration & optimizationApache server configuration & optimization
Apache server configuration & optimization
Gokul Muralidharan
 

Similar to Server-side Java Programming (20)

OpenSocial and Mixi platform
OpenSocial and Mixi platformOpenSocial and Mixi platform
OpenSocial and Mixi platform
Pham Thinh
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
Chris Schalk
 
Enterprise Social using Open Source Frameworks
Enterprise Social using Open Source FrameworksEnterprise Social using Open Source Frameworks
Enterprise Social using Open Source Frameworks
Werner Keil
 
Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)
Werner Keil
 
Open social & cmis oasistc-20100712
Open social & cmis   oasistc-20100712Open social & cmis   oasistc-20100712
Open social & cmis oasistc-20100712
weitzelm
 
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Chris Schalk
 
OpenSocial CyWorld Dev.Square presentation Sep 09
OpenSocial CyWorld Dev.Square presentation Sep 09OpenSocial CyWorld Dev.Square presentation Sep 09
OpenSocial CyWorld Dev.Square presentation Sep 09
Chris Schalk
 
Open Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial MeetupOpen Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial Meetup
Chris Schalk
 
Netlog & The Open Web
Netlog & The Open WebNetlog & The Open Web
Netlog & The Open Web
Folke Lemaitre
 
Introduction To Open Web Protocols
Introduction To Open Web ProtocolsIntroduction To Open Web Protocols
Introduction To Open Web Protocols
Mohan Krishnan
 
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social webFuturopolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Patrick Chanezon
 
State Of Opensocial
State Of OpensocialState Of Opensocial
State Of Opensocial
Patrick Chanezon
 
Buiding application for social networks
Buiding application for social networksBuiding application for social networks
Buiding application for social networks
Đỗ Duy Trung
 
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWebSeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
ProcessOne
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.com
Chris Schalk
 
OpenID vs OAuth - Identity on the Web
OpenID vs OAuth - Identity on the WebOpenID vs OAuth - Identity on the Web
OpenID vs OAuth - Identity on the Web
Richard Metzler
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
Chris Chabot
 
Spring Social - Messaging Friends & Influencing People
Spring Social - Messaging Friends & Influencing PeopleSpring Social - Messaging Friends & Influencing People
Spring Social - Messaging Friends & Influencing People
Gordon Dickens
 
Goodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social UpdateGoodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social Update
Patrick Chanezon
 
Building Social Business Applications with OpenSocial
Building Social Business Applications with OpenSocialBuilding Social Business Applications with OpenSocial
Building Social Business Applications with OpenSocial
Clint Oram
 
OpenSocial and Mixi platform
OpenSocial and Mixi platformOpenSocial and Mixi platform
OpenSocial and Mixi platform
Pham Thinh
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
Chris Schalk
 
Enterprise Social using Open Source Frameworks
Enterprise Social using Open Source FrameworksEnterprise Social using Open Source Frameworks
Enterprise Social using Open Source Frameworks
Werner Keil
 
Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)
Werner Keil
 
Open social & cmis oasistc-20100712
Open social & cmis   oasistc-20100712Open social & cmis   oasistc-20100712
Open social & cmis oasistc-20100712
weitzelm
 
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Chris Schalk
 
OpenSocial CyWorld Dev.Square presentation Sep 09
OpenSocial CyWorld Dev.Square presentation Sep 09OpenSocial CyWorld Dev.Square presentation Sep 09
OpenSocial CyWorld Dev.Square presentation Sep 09
Chris Schalk
 
Open Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial MeetupOpen Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial Meetup
Chris Schalk
 
Introduction To Open Web Protocols
Introduction To Open Web ProtocolsIntroduction To Open Web Protocols
Introduction To Open Web Protocols
Mohan Krishnan
 
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social webFuturopolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Patrick Chanezon
 
Buiding application for social networks
Buiding application for social networksBuiding application for social networks
Buiding application for social networks
Đỗ Duy Trung
 
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWebSeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
ProcessOne
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.com
Chris Schalk
 
OpenID vs OAuth - Identity on the Web
OpenID vs OAuth - Identity on the WebOpenID vs OAuth - Identity on the Web
OpenID vs OAuth - Identity on the Web
Richard Metzler
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
Chris Chabot
 
Spring Social - Messaging Friends & Influencing People
Spring Social - Messaging Friends & Influencing PeopleSpring Social - Messaging Friends & Influencing People
Spring Social - Messaging Friends & Influencing People
Gordon Dickens
 
Goodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social UpdateGoodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social Update
Patrick Chanezon
 
Building Social Business Applications with OpenSocial
Building Social Business Applications with OpenSocialBuilding Social Business Applications with OpenSocial
Building Social Business Applications with OpenSocial
Clint Oram
 
Ad

More from Chris Schalk (20)

Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and Update
Chris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
Chris Schalk
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the Cloud
Chris Schalk
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
Chris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
Chris Schalk
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
Chris Schalk
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud Technologies
Chris Schalk
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud Technologies
Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
Chris Schalk
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud Technologies
Chris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
Chris Schalk
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the Cloud
Chris Schalk
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
Chris Schalk
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies Overview
Chris Schalk
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for Business
Chris Schalk
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologies
Chris Schalk
 
Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and Update
Chris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
Chris Schalk
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the Cloud
Chris Schalk
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
Chris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
Chris Schalk
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
Chris Schalk
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud Technologies
Chris Schalk
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud Technologies
Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
Chris Schalk
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud Technologies
Chris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
Chris Schalk
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the Cloud
Chris Schalk
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
Chris Schalk
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies Overview
Chris Schalk
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for Business
Chris Schalk
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologies
Chris Schalk
 
Ad

Recently uploaded (20)

Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptxECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
Jasper Oosterveld
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Nikki Chapple
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
 
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPathCommunity
 
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
 
Microsoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentationMicrosoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentation
Digitalmara
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptxECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
ECS25 - The adventures of a Microsoft 365 Platform Owner - Website.pptx
Jasper Oosterveld
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Nikki Chapple
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
 
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPathCommunity
 
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
 
Microsoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentationMicrosoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentation
Digitalmara
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 

Server-side Java Programming

  • 1. Server-side OpenSocial Java programming Chris Schalk, Google Developer Advocate 10/04/2009
  • 2. Agenda • OpenSocial Background • OAuth Background • OpenSocial Java Client Libraries • 2-legged and 3-legged OAuth Access • Connecting to a Google Friend Connect site 2
  • 4. What is OpenSocial? “OpenSocial defines a common set of APIs based on Open Standards for building social applications across multiple websites” 4
  • 5. What is OpenSocial? Before OpenSocial… 5
  • 6. What is OpenSocial? Standards Based 6
  • 9. Who owns OpenSocial? ? No! OpenSocial is managed under the auspices of the “OpenSocial Foundation” - http://www.opensocial.org 9
  • 10. Who's Using it? and many more... 10
  • 12. OpenSocial Roadmap • Version 0.5 was released in a “developer release” on Nov 1st 2007. • First “sandbox” was made available on Orkut • Version 0.6 was released in December 2007 • Initial version of Shindig server software was launched as Apache incubator project • Other sandboxes came live - Hi5, Ning, Plaxo … • Version 0.7 (production) was released in January 2008 • MySpace, Hi5, Orkut began running 0.7 12
  • 13. OpenSocial Roadmap • Version v0.8/0.8.1 • Released in late 2008 • Contains a RESTful protocol, RPC protocol • OpenSocial Client Libraries launched in Dec 08 • Specification: http://www.opensocial.org/Technical-Resources/opensocial-spec-v081 13
  • 14. OpenSocial 0.9 - Current • Key Goal: – Enable a faster development experience that is both secure and efficient Core principles: • Client-side and server-side processing • Standard set of tags with extensibility model – Example: <os:ShowPerson> 14
  • 15. Where can you find info on OpenSocial? http://wiki.opensocial.org 15
  • 17. OAuth 101 What is OAuth? • A standard, open protocol for secure API authorization for : – Desktop – Web – Mobile • OAuth provides an API to access to secure data while protecting account credentials. • More info: http://oauth.net 17
  • 18. OpenSocial Java client libraries 18 1 8
  • 19. Introducing the OpenSocial Client Libraries A set of client libraries for that enable direct communication to an OpenSocial server. • Client libraries exist for PHP, Ruby, Python and Java • Supports both REST and RPC protocols • Documentation Wiki pages • Sample applications provided http://code.google.com/p/opensocial-php-client http://code.google.com/p/opensocial-ruby-client http://code.google.com/p/opensocial-python-client http://code.google.com/p/opensocial-java-client 19 19
  • 20. RESTful and RPC protocols Sample: Using the OpenSocial client library to Fetch a user’s friends OpenSocialClient c = new OpenSocialClient("myhost.com"); c.setProperty(OpenSocialClient.Properties.REST_BASE_URI, "http://localhost:8080/social/rest/"); try { OpenSocialPerson p = c.fetchPerson("john.doe"); System.out.println(p.getDisplayName()); Collection<OpenSocialPerson> friends = c.fetchFriends("john.doe"); for (OpenSocialPerson friend : friends) { System.out.println(friend.getDisplayName()); } } catch (Exception e) { } 20
  • 21. Demonstration: Working with the OpenSocial Java client library 21 21
  • 22. 2-legged and 3-legged OAuth access 22 2 2
  • 23. Demonstration: Connecting to an OpenSocial container using 2-legged OAuth (2-legged) http://code.google.com/p/opensocial-java-client/wiki/TwoLeggedOAuthJava 23 23
  • 24. Examining 2-legged OAuth access • Does not offer universal access to the container – Specifically tied to a single application installed on the container – Uses hardcoded token values • Consumer Key • Consumer Secret • Application security is left to the calling application • Pros: – Technically easy to implement – Good for background data fetch • Cons: – Can only access social data associated with single application on the container – Security can be compromised if Consumer key/secret obtained 24
  • 25. Demonstration: Connecting to an OpenSocial container using 3-legged OAuth (3-legged) http://wiki.opensocial.org/index.php?title=Social_Website_Tutorial 25 25
  • 27. Examining 3-legged OAuth access • Offers universal access to the container – User provides their own credentials to container to allow access to data • Application security is entirely under control of container • Pros: – Not hardcoded to specific application since user provides credentials, so access can be for anyone • Cons: – Always have to go through access request step • “Doing the Dance…” – Not meant for automated data transactions 27
  • 28. Connecting to a Google Friend Connect Site 28 2 8
  • 29. Demonstration: Connecting to Google Friend Connect from an independent website ‘fcauth’ security token http://plane-crazy.appspot.com 29 29
  • 30. Useful Links OpenSocial Homepage & specification: http://www.opensocial.org OAuth website: • http://oauth.net 2 legged OAuth tutorial (in the wiki): • http://code.google.com/p/opensocial-java-client/ 3 legged OAuth tutorial: “social website tutorial”: • http://wiki.opensocial.org/index.php?title=Social_Website_Tutorial Google Friend Connect: • http://google.com/friendconnect • http://code.google.com/apis/friendconnect Plane Crazy example app: • http://plane-crazy.appspot.com 30
  • 31. Questions Q&A Thank You! 31