3. What is OpenSocial?
“OpenSocial defines a common API for social
applications across multiple websites. Built from
standard JavaScript and HTML, developers can
create apps with OpenSocial that access a social
network's friends and update feeds. By using a
common API, developers can extend the reach of
their applications more quickly, yielding more
functionality for users.”
13. Meet the Actors
The VIEWER
Always the Member currently viewing the gadget.
14. Meet the Actors
The OWNER
The member who owns the profile being looked at.
Sometimes also the owner of a canvas page.
15. Meet the Container
A Container is a Social Network that
provides an environment for OpenSocial
Javascript and REST calls, “views” for gadgets
to surface on, and underlying Social Data.
16. Meet the Views
Home Page
• Primary point of entry for members
• Owner & Viewer are always the same
• Content should be focused on the Member’s interaction with the
application
17. Meet the Views
Profile Page
• Owner is the person who owns the profile
• Information displayed is seen by all who visit the profile
• Content should be focused on what the member does with the
application
18. Meet the Views
Canvas Page
• Serves many purposes & contexts for an application
• Owner & Viewer might not be the same. Owner is determined by
how it was navigated to.
• Content can be anything related to the application
20. Dig the new Science!
• Technologies Involved
• Accessible Social Data
• Viral Features (Messaging, Network Updates)
• Iterative Hello, World! Example
21. Technologies
• Javascript (for Controller,View, and Model
logic)
• JSON (for Social Data in gadget or using in
OpenSocial REST APIs)
• XML (for Gadget Spec, optional REST)
• HTML (for your View layer)
• REST (for interacting with your server or
using OpenSocial REST APIs)
22. Social Data
• Person
• friends (connections)
• id
• name ( givenName, familyName, unstructured )
• thumbnailUrl
• aboutMe
• currentLocation ( unstructured )
• jobs ( title, name, description, field, startDate, endDate,)
• schools ( name, startDate, endDate )
• urls
• linkedin-ext ( require the feature in your gadget spec )
• numConnections
• distance
For more detail on fields available:
http://code.google.com/apis/opensocial/docs/0.8/reference/#opensocial.Person
24. Virality
Connection Messaging
requestSendMessage() / requestShareApp()
On LinkedIn, messages can be sent to 1st degree connections using this function. User
will be diverted to standard message sending flow. The Javascript callback will never be
called.
Network Updates
requestCreateActivity()
Creates a Network Update on behalf of the Viewer of the
application. Updates should be contextual based on a user action.
Good: “Taylor is reading In Watermelon Sugar.”
Bad: “Taylor just installed this lame application.”
25. Let’s Begin.
• Start with Hello, World!
• Sprinkle some Social Data
• Support some Views
• Phone Home to your Server
• Celebrate!
30. Hello, world!
From gadget metadata
From your <Content> block
31. Adding Social Data
1. Setup a new DataRequest object
2. Add a new fetchPerson request for Actors you
need data for, fetchPeople requests for
collections like friends, arrays of member ids...
3. Execute the request with request.send,
specifying a callback that will act on the data
37. Functions to Know
Get a View Object
var view = new gadgets.views.View(quot;viewName”);
viewName in this case would be one of our supported views: canvas, profile, home
You need a view object to request navigation to it.
Navigate Between Views
gadgets.views.requestNavigateTo(view, optionalParameters)
This initiates a transition from one view to another.
• You can’t specify an Owner or Viewer in this context. It carries over from the last.
• You use this function in an onClick event for a link
• optionalParameters are JSON-format parameters to be passed only to a Canvas
page. How to get these parameters on the next page will be detailed on the next
slide
38. Functions to Know
Receive URL Parameters
gadgets.views.getParams()
Parameters sent via requestNavigateTo (or provided by other means of generating a
canvas URL) are accessible through this function in JSON Hash format.
Adjust View Height
gadgets.window.adjustHeight()
Adjusts the height of your gadget frame, while trying to auto-magically guess how
much space you need, within the confines of the allowed height. Not always accurate.
• You can specify an integer representing the exact pixel height to extend to.
45. How to Phone Home
Use gadgets.io.makeRequest()
Inbound to your server, you’ll receive these parameters:
opensocial_owner_id
opensocial_viewer_id
opensocial_app_id
opensocial_app_url
In addition, you’ll receive an OAuth signature for parameter validation.
Implementation depends on your server-side language and is beyond the
scope of this tutorial.
46. How to Phone Home
Processing the Callback
• If your content type in the response is HTML, your
response variable would be a string with that HTML.
• If your content type in the response is JSON, it will
automatically be destringified into a JSON object.