OpenSocial - GTUG Stockholm Meeting Oct 1 2009 - Presentation Transcript
OpenSocial An open standard for social applications Jacob Gyllenstierna Avatars United GTUG Stockholm Meeting October 1, 2009
What is OpenSocial?
"...a set of common APIs for building social applications across many websites."
What is OpenSocial?
Applications that leverage social connections and communication channels on a website
Fetch and post social data about friends and activities, send messages, etc.
Single programming model - Write once, run anywhere (almost)
Can be used both inside and outside enabled website ("OpenSocial container")
Module language using XML + JavaScript APIs + HTML for embedded applications
RESTful & RPC protocols for external applications
Who is using OpenSocial?
Many popular social networks and consumer websites
Emerging in the enterprise space
+600M users worldwide
OpenSocial vs. Google Gadgets
OpenSocial is an extension of the Google Gadgets specification
Google Gadgets: framework for embedding small applications on websites - rendering, UI components, cross-domain proxying, i18n, user settings, inter-frame communication, security
Rendered in an iframe on the container
OpenSocial adds social APIs to Google Gadgets (and server-side protocols...)
Development types
Hello virtual world!
<? xml version =" 1.0 " encoding =" UTF-8 "?> < Module > < ModulePrefs title =" Hello virtual world! " description =" My first application. " thumbnail =" http://stuff.cookiejunkie.com/gtug-sthlm/gadgets/gtug2_thumb.png "> </ ModulePrefs >
< Content type =" html " view =" profile ">
<![CDATA[
Hello from the profile view!
]]>
</ Content >
< Content type =" html " view =" canvas ">
<script type="text/javascript"> function fetchFriends() {...} function showFriends(response) {...} gadgets.util.registerOnLoadHandler(fetchFriends) ; </script> ]]>
</ Content >
Listing my friends
function fetchFriends() {
var req = opensocial.newDataRequest();
var idSpecParams = {}; idSpecParams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.OWNER; idSpecParams[opensocial.IdSpec.Field.GROUP_ID] = opensocial.IdSpec.GroupId.FRIENDS; var idSpec = opensocial.newIdSpec(idSpecParams); req.add(req.newFetchPeopleRequest(idSpec), "ownerFriends");
req.send(showFriends); }
function showFriends(response) {
...
}
Listing my friends
function showFriends(response) {
var respItem = response.get("ownerFriends");
if (respItem.hadError()) { alert("Error fetching friends!"); } else { var data = respItem.getData(); var friendsDiv = document.getElementById("friends"); var html = "<ul>"; data.each(function(person) { var name = person.getDisplayName(); var thumbnailUrl = person.getField(opensocial.Person.Field.THUMBNAIL_URL); html += "<li>"; html += "<img src="" + thumbnailUrl + "" /> " + name; html += "</li>"; }); html += "</ul>"; friendsDiv.innerHTML = html;
OpenSocial concepts
People
Friends / Connections
Activities
Persistent data (key-value store)
Messages
Sharing application
Fetching data from Twitter
< Content type =" html " view =" profile,canvas ">
<![CDATA[
<h3>Top ten trends:</h3><br /> <div id="trends"></div>
<script type="text/javascript"> function fetchTrends() {...} function showTrends(response) {...} gadgets.util.registerOnLoadHandler(fetchTrends) ; </script> ]]>
function showTrends(response) { if (response.errors && response.errors.size > 0) { alert("Error fetching trends!"); } else { var data = response.data; var trends = data.trends; var trendsDiv = document.getElementById("trends"); var html = "<ul>"; for (var i = 0; i < trends.length; i++) { var trend = trends[i]; html += "<li>"; html += "<a href="" + trend.url + "" target="_blank">" + trend.name + "</a>"; html += "</li>"; } html += "</ul>"; trendsDiv.innerHTML = html; }}
0 comments
Post a comment