y!os overview and deep code dive
DESCRIPTION
Overview of the Yahoo! Open Strategy and a deep technical code dive into the components.TRANSCRIPT
Yahoo! Open Strategy Y!OSDecember 20, 2008
Jonathan LeBlanc – YDN
- 2 -
Y!OS Goals
- 3 -
Establish a Social Dimension – Profileshttp://profiles.yahoo.com
- 4 -
Establish a Social Dimension – Small Viewhttp://my.yahoo.com
- 5 -
Opening Yahoo – Application platform (YAP) http://developer.yahoo.com/dashboard
- 6 -
Opening Yahoo – Application Galleryhttp://apps.yahoo.com/myapps
- 7 -
YAP ComponentsHow does it work?
- 8 -
YAP Components – Open Authentication (OAuth)
• 2-legged & 3-legged OAuth
• Consumer / Shared Secret keys
• Similar to BBAuth, but open standard
- 9 -
YAP Components – Yahoo! Markup Language (YML)http://developer.yahoo.com/yap/yml
• Allows secured access to private data
• Can use ‘me’ and ‘viewer’ keywords
• Small view uses YML lite
• Will begin integrating into OSML
- 10 -
YAP Components – Social APIshttp://developer.yahoo.com/social/
• Social Directory (read)
• Contacts (read)
• User Status (read / write)
• Updates (read / write)
- 11 -
YAP Components – Cajahttp://code.google.com/p/google-caja
• HTML / CSS / JavaScript securer
• Enforces standards
• Includes JSLint
• YAP is the first major platform to fully integrate this technology (and keep it running)
- 12 -
YAP Components – Software Development Kits (SDKs)http://developer.yahoo.com/social/sdk
PHP SDK Currently AvailableOpen and OAuth Applications
ActionScript 3 SDK Currently AvailableOpen Applications
Java SDK in DevelopmentOpen and OAuth Applications
- 13 -
YAP Components – Yahoo! Query Language (YQL) http://developer.yahoo.com/yql
• SQL-like syntax
• Private / Public Data
• Use of certain YDN API’s
• Captures external data feeds
- 14 -
YAP ApplicationsHow do They Work?
- 15 -
YAP Applications – Open Applications
• Runs on platform
• Can use 2 & 3 legged OAuth
• Contain small and large views
• Small view uses YIV & iframe to secure
• Large view uses Caja to secure
• Supports OpenSocial 0.8
- 16 -
YAP Applications – Open ApplicationsCreating an Open Application – Step 1
- 17 -
YAP Applications – Open Applications Creating an Open Application – Step 2
- 18 -
YAP Applications – Open Applications Creating an Open Application – Step 3
- 19 -
YAP Applications – Open ApplicationsCreating an Open Application – Step 4
- 20 -
YAP Applications – Open ApplicationsExternal Access Prohibited
- 21 -
YAP Applications – OAuth Applications
• Runs off platform
• Uses 2 & 3 legged OAuth
• Does not contain views
• Requires Users to Authenticate Session
- 22 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 1
- 23 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 2
- 24 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 3
- 25 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 4
- 26 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 5
- 27 -
YAP Applications – OAuth ApplicationsCreating an OAuth Application – Step 6
- 28 -
Y!OS ResourcesHow Do I Get Started?
- 29 -
Y!OS Resources - Documentation
Y!OS Main Overview - http://developer.yahoo.com/yos
YAP Main Overview - http://developer.yahoo.com/yap
YQL Docs - http://developer.yahoo.com/yql
YML Docs - http://developer.yahoo.com/yap/yml
Caja - http://code.google.com/p/google-caja/
Caja Support - http://developer.yahoo.com/yap/guide/caja-support.html
Slide Deck (Overview) - http://www.slideshare.net/jleblanc/yos-presentation-presentation
Slide Deck (Deep Dive) - http://www.slideshare.net/jleblanc/sdk-presentation-presentation/
- 30 -
Y!OS Resources – Tools and Galleries
YAP Dashboard - http://developer.yahoo.com/dashboard
YQL Console - http://developer.yahoo.com/yql/console
JSLint - http://www.jslint.com
Application Gallery - http://apps.yahoo.com/myapps
YDN Forum - http://developer.yahoo.com/forum
PHP SDK - http://developer.yahoo.com/social/sdk/
AS3 SDK - http://developer.yahoo.com/flash/yos/
- 31 -
Y!OS Deep DiveDecember 20, 2008
Jonathan LeBlanc – YDN
- 32 -
Y!OS Code OverviewYahoo! Markup Language (YML)
- 33 -
YML – Available Tags
YML Tags
yml:a yml:audio yml:form yml:friend-selectoryml:if-env yml:image yml:messageyml:name yml:profile-pic yml:pronounyml:share yml:swf yml:user-badgeyml:visible-to-friends yml:visible-to-owneryml:visible-to-user
YML Lite Tags
yml:a yml:audio yml:form yml:if-env yml:image yml:name yml:profile-pic yml:pronoun yml:user-badge
- 34 -
YML – Syntax Rules
• YML tags are namespaced with yml:. However, since YML
documents are not actually XML, no formal namespace
declaration is required.
• All attributes must be enclosed in double quotes. To specify
double quotes within an attribute value, enter the "
character reference.
• If the data type of an attribute is boolean, allowed values are
"true" and "false", which must be enclosed in double quotes.
• Singleton tags (that is, tags with no closing tags) must end
with /> .
• White space and indentations are passed through, but ignored in
the interpretation phase.
• YML tags accept and produce characters in UTF-8 only.
- 35 -
YML – Sample YML UseTab Controller
- 36 -
YML – Sample YML UseTab Construction
- 37 -
YML – Sample YML UseTab Styles
- 38 -
Y!OS Code OverviewPHP SDK
- 39 -
PHP SDK – 2-Legged OAuth Initialization
Used For:
Applications which only require access to public user data and
open APIs
- 40 -
PHP SDK – 3-Legged OAuth Initialization
Used For:
- Applications requiring private data access
- 41 -
PHP SDK – User Data Manipulation
- 42 -
PHP SDK – Create an Update for a User
- 43 -
PHP SDK – Set the Status (Presence) of a User
- 44 -
Y!OS Code OverviewYahoo! Query Language
- 45 -
YQL – Console
Location: http://developer.yahoo.com/yql/console
- 46 -
YQL – Query Structure
Projection- SELECT what FROM table- SELECT * FROM social.connections
Local and Remote Filtering- SELECT what FROM table WHERE filter- SELECT * FROM social.profile WHERE guid = me
Sub-selects - Joining Data- SELECT what FROM table WHERE fieldvalue IN (SELECT ...)- SELECT * FROM social.profile WHERE guid IN (SELECT guid FROM social.connections WHERE owner_guid=me) Local Paging Control- SELECT what FROM table WHERE filter LIMIT 10 OFFSET 50- SELECT * FROM web.search WHERE query="madonna" LIMIT 3 OFFSET 10
Remove Table Size Control- SELECT what FROM table(0,500) WHERE condition- SELECT * FROM web.search(0,10) WHERE query="madonna" AND result.XXX = something
- 47 -
YQL – Available Tables
YQL Command: SHOW tables
- 48 -
YQL – Table Contents
YQL Command: DESC social.connections
- 49 -
YQL – Running a Query
- 50 -
YQL – Output Types
- 51 -
Y!OS Code OverviewCaja
- 52 -
Caja & JavaScript – Before Cajoling
- 53 -
Caja & JavaScript – After Cajoling
- 54 -
Caja & JavaScript – What doesn’t work?
• eval()
• new Function()
• Strings as event handlers (node.onclick = '...';)
• Names ending with double / triple underscores
• with function (with (obj) { ... })
• Implicit global variables (specify var variable)
• Calling a method as a function
• document.write
• window.event
• .onclick
• OpenSocial gadgets.io.makeRequest return JS
- 55 -
Caja & HTML – What doesn’t work?
• name attributes with gadgets.io.makeRequest
• Custom attributes
• Custom tags
• Unclosed tags
• <embed>
• <iframe>
• <link rel=‘…
• javascript:void(0)
• Radio buttons in IE
• Relative url’s
- 56 -
Caja & CSS – What doesn’t work?
• * hacks
• _ hacks
• IE conditionals
• Insert-after clear fix
• expression()
• @import
• Background images in IE
- 57 -
Y!OS Code OverviewCommon Issues
- 58 -
Common platform issues and questions
• I attempt to authenticate my 2-legged / 3-legged session and receive a “null object error”
• How do I authenticate OAuth using JavaScript?
• I have an existing OpenSocial application. How do I get started?
• I have an existing Facebook application. How do I get started?
• None of my styles are displaying, what’s happening?
• Why PHP / AS3 for the first SDK?
• setSmallView is not working? What’s going on?
- 59 -
Questions?
Thank you!