sea open hack - yap

Post on 06-May-2015

2.617 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Yahoo! Application Platform (YAP) presentation for the South East Asia (SEA) Open Hack Day in Jakarta, Indonesia (November 2009)

TRANSCRIPT

Y!OS and the Yahoo! Application Platform

Jonathan LeBlanc - Technology EvangelistYahoo! Developer Network

Twitter: @jcleblanc

Presentation Topics – What We’ll Cover (Part 1)

• The Yahoo! Open Strategy (Y!OS)

• The Yahoo! Application Platform (YAP)

• What are Applications on YAP?

• Creating YAP Applications

• OAuth

• OpenID

• The Yahoo! Markup Language

Presentation Topics – What We’ll Cover (Part 2)

• OpenSocial Support-Code Samples for using the SDK and OpenSocial

• The YAP Social APIs

• Frontend Security using Caja

• Beta Support for the Yahoo! User Interface Library (YUI)

DEVELOPER.YAHOO.COMEXAMPLES | TUTORIALS | CODE SAMPLES

The Yahoo! Open Strategy (Y!OS)

The Yahoo! Application Platform (YAP)

Creating Applications

Create a Profile for Your Account

http://profiles.yahoo.com

Create an Application Using the Dashboard System

http://developer.yahoo.com/dashboard

Get Documentation and Resources

http://developer.yahoo.com/yos

Open ID – Single Account Sign-in

OAuth - Open Authentication

SDKs (Software Development Kits)

PHP, Python, Java, ActionScript 3,

Objective-C, and OpenSocial REST APIs

http://www.github.com/yahoo

OAuth – What Does the End-User See?

OAuth – What Does the End-User See?

Yahoo! Markup Language (YML)

Using the Yahoo! Markup language (YML)

YML Documentation

http://developer.yahoo.com/yap/guide/yapdev-yml.html

YML Samples

http://developer.yahoo.com/yap/guide/yml-code-exs.html

Questions?

Y!OS and the Yahoo! Application Platform

Jonathan LeBlanc - Technology EvangelistYahoo! Developer Network

Twitter: @jcleblanc

Presentation Topics – What We’ll Cover (Part 2)

• OpenSocial Support-Code Samples for using the SDK and OpenSocial

• The YAP Social APIs

• Frontend Security using Caja

• Beta Support for the Yahoo! User Interface Library (YUI)

OpenSocial 0.8 Support

What is OpenSocial?

• For developing applications on social networks• Accessing social data (profiles, connections)• Fetching and inserting activities

• Implemented by many containers• Develop once, distribute broadly

Fetching User Data & Making Requests

• Examples for OpenSocial & PHP• Fetching Profiles• Fetching and Inserting Updates• Fetching Connections• Making YQL Requests

Collecting User Data With PHP & OpenSocial 0.8

$session = YahooSession::requireSession($key, $secret, $app_id)$user = $session->getSessionedUser();$profile = $user->getProfile();

---------------------------------------------------------------------------------------------------------------

var req = opensocial.newDataRequest(); var params = {};params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [ opensocial.Person.Field.NAME, opensocial.Person.Field.THUMBNAIL_URL];

req.add(req.newFetchPersonRequest('VIEWER', params), 'viewer_profile');req.send(response);

Fetching Updates With PHP & OpenSocial 0.8

Getting Updates With PHP & OpenSocial 0.8

$session = YahooSession::requireSession($key, $secret, $app_id)

$user = $session->getSessionedUser();

$updates = $user->getUpdates();

-------------------------------------------------------------------------------var req = opensocial.newDataRequest();

var spec = new opensocial.IdSpec();

spec.setField(opensocial.IdSpec.Field.USER_ID, opensocial.IdSpec.PersonId.OWNER);

req.add(req.newFetchActivitiesRequest(spec), 'ownerActivities');

req.send(handleActivities);

Inserting Updates With PHP & OpenSocial 0.8

$session = YahooSession::requireSession($key, $secret, $app_id)

$user = $session->getSessionedUser();

$update = $user->insertUpdate($suid, $title, $link, $description);

--------------------------------------------------------------------------var params = {}, activity;

params[opensocial.Activity.Field.TITLE] = title;

params[opensocial.Activity.Field.BODY] = body;

activity = opensocial.newActivity(params);

opensocial.requestCreateActivity(

activity, opensocial.CreateActivityPriority.LOW, callback);

Fetching Connections With PHP & OpenSocial 0.8

Fetching Connections With PHP & OpenSocial 0.8

$session = YahooSession::requireSession($key, $secret, $app_id)

$user = $session->getSessionedUser();

$connections = $user->getConnections();

-------------------------------------------------------------------------var req = opensocial.newDataRequest();

var idspec = opensocial.newIdSpec({ 'userId' : 'OWNER', 'groupId' : 'FRIENDS' });

req.add(req.newFetchPersonRequest('OWNER'), 'get_owner');

req.add(req.newFetchPeopleRequest(idspec), 'get_friends');

req.send(responseFriends);

Making YQL Requests With PHP & OpenSocial 0.8

$session = YahooSession::requireSession($key, $secret, $app_id)

$query = $session->query(‘select * from maps.map where zip="94085" ’);

-------------------------------------------------------------------------var params = {};

var url = 'http://developer.yahoo.com/yql/console/?q=select%20*%20from%20flickr.photos.search%20where%20text%3D%22Times%20Square%22'

var callback = callbackFunc;

params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;

params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;

gadgets.io.makeRequest(url, callback, params);

Important URLs

OpenSocial Site Links

http://wiki.opensocial.org/index.php?title=Opensocial_(v0.8)

http://wiki.opensocial.org/index.php?title=Opensocial.Person_%28v0.8%29

Developer Network Links

http://developer.yahoo.com/yap/guide/os-supp-features.html

http://developer.yahoo.com/yap/guide/opensocial-examples.html

The Yahoo! Social APIs

What are the Social APIs?

Social Directory API Reference

http://developer.yahoo.com/social/rest_api_guide/social_dir_api.html

Status API Reference

http://developer.yahoo.com/social/rest_api_guide/status_api.html

Contacts API Reference

http://developer.yahoo.com/social/rest_api_guide/contact_api.html

Updates API Reference

http://developer.yahoo.com/social/rest_api_guide/updates_api.html

Calling the Social APIs with the SDK Functions

Given:$ysession = YahooSession::requireSession(API_KEY, API_SECRET, APP_ID);$yuser = $ysession->getSessionedUser();

Social Directory API (Profile & Connections)$yuser->loadProfile();$yuser->getConnections($start, $count, $total);

Status API$yuser->getStatus();

Calling the Social APIs with the SDK Functions

Given:$ysession = YahooSession::requireSession(API_KEY, API_SECRET, APP_ID);$yuser = $ysession->getSessionedUser();

Contacts API$yuser->getContacts($start, $count);

Updates API$yuser->getUpdates($start, $count);

Front-End SecurityJavaScript / HTML / CSS

Front-end Security

Front-end Security: Caja

Caja Security

• Very secure model (whitelist methodology)

• Aims to protect end-users

• Full content control

IFrame Concerns

• Drive-by downloads

• No content restrictions

• Other known exploits

Front-end Security: Caja Cajoling Process

<script type="text/javascript">

function response(obj) {

if (obj.text){

document.getElementById('interact').setInnerHTML('Populated!');

document.getElementById('population').setInnerHTML(obj.errors);

}

}

</script>

Front-end Security: Caja Cajoling Process

var $dis = $v.getOuters(); $v.initOuter('onerror'); $v.so('response', ___.markFuncFreeze(function () { function response$_caller($dis, obj) { if ($v.r(obj, 'text')) { $v.cm($v.cm($v.ro('document'), 'getElementById', [ 'interact' ]), 'setInnerHTML', [ 'Populated!' ]); $v.cm($v.cm($v.ro('document'), 'getElementById', [ 'population' ]), 'setInnerHTML', [ $v.r(obj, 'errors') ]); } } response$_caller.FUNC___ = 'response$_caller'; var response;; response = $v.dis(___.primFreeze(response$_caller), 'response'); return response;

What isn’t supported in YAP?

Blacklisted HTML tags

http://developer.yahoo.com/yap/guide/caja-blacklist.html

Caja Limitations

http://developer.yahoo.com/yap/guide/what-are-cajas-limitations.html

What isn’t supported in YAP?

• AJAX functionality (use YML / OpenSocial)

• Most JavaScript libraries

• Script Source Includes (except YUI)

BETA YUI Support

How to Implement YUI

Implementing as includes

<script type="text/javascript" src="http://yui.yahooapis.com/2.8.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>

Insert content into a script block

Available Libraries

http://developer.yahoo.com/yap/guide/yui-support.html#libs-available

Important URLs

YUI Support in YAP

http://developer.yahoo.com/yap/guide/yui-support.html

Dependancy Configurator

http://developer.yahoo.com/yui/articles/hosting/

Questions?

Resources

Slides Available At:

http://www.slideshare.net/jcleblanc/yap-open-mail-overview

YAP Documentation and Tutorials:

http://developer.yahoo.com/yos

OpenSocial Documentation:

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

top related