Future of Web Apps - Miami, FL - February 2009

55
Scaling Open Jonathan LeBlanc – Sr. Software Engineer / Tech Evangelist Yahoo! Developer Network – Partner Integrations February 23, 2009

description

Future of web applications conference on Scaling Open. Yahoo! Application Platform (YAP) and technology deep dive.

Transcript of Future of Web Apps - Miami, FL - February 2009

Page 1: Future of Web Apps - Miami, FL - February 2009

Scaling OpenJonathan LeBlanc – Sr. Software Engineer / Tech Evangelist

Yahoo! Developer Network – Partner Integrations

February 23, 2009

Page 2: Future of Web Apps - Miami, FL - February 2009

2

YAP Applications What’s a YAP Application?

Page 3: Future of Web Apps - Miami, FL - February 2009

3

Page 4: Future of Web Apps - Miami, FL - February 2009

4

Page 5: Future of Web Apps - Miami, FL - February 2009

5

Page 6: Future of Web Apps - Miami, FL - February 2009

6

Page 7: Future of Web Apps - Miami, FL - February 2009

7

Page 8: Future of Web Apps - Miami, FL - February 2009

8

Page 9: Future of Web Apps - Miami, FL - February 2009

9

YAP Applications How do I get started?

Page 10: Future of Web Apps - Miami, FL - February 2009

10

• Runs on YAP

• Supports 2- & 3- legged OAuth

• Supports OpenSocial 0.8

JavaScript APIs

Open Applications

Page 11: Future of Web Apps - Miami, FL - February 2009

11

Open Application - Views

Small View

Large View

Page 12: Future of Web Apps - Miami, FL - February 2009

12

Open Application – Small View

Page 13: Future of Web Apps - Miami, FL - February 2009

13

Open Application – Large View

Page 14: Future of Web Apps - Miami, FL - February 2009

14

http://developer.yahoo.com/dashboard

Page 15: Future of Web Apps - Miami, FL - February 2009

15

http://developer.yahoo.com/dashboard

Page 16: Future of Web Apps - Miami, FL - February 2009

16

Page 17: Future of Web Apps - Miami, FL - February 2009

17

Page 18: Future of Web Apps - Miami, FL - February 2009

18

Page 19: Future of Web Apps - Miami, FL - February 2009

19

• Runs off platform

• Supports 2- & 3-legged OAuth

• Does not contain views

• Requires users to authenticate

session

OAuth Applications

Page 20: Future of Web Apps - Miami, FL - February 2009

20

http://developer.yahoo.com/dashboard

Page 21: Future of Web Apps - Miami, FL - February 2009

21

http://developer.yahoo.com/dashboard

Page 22: Future of Web Apps - Miami, FL - February 2009

22

Page 23: Future of Web Apps - Miami, FL - February 2009

23

Page 24: Future of Web Apps - Miami, FL - February 2009

24

Page 25: Future of Web Apps - Miami, FL - February 2009

25

Page 26: Future of Web Apps - Miami, FL - February 2009

26

Page 27: Future of Web Apps - Miami, FL - February 2009

27

YAP Code Dive What can you do with YAP?

Page 28: Future of Web Apps - Miami, FL - February 2009

28

YAP Code Dive PHP SDK

Page 29: Future of Web Apps - Miami, FL - February 2009

29

Used For:

- Public user data and open APIs

PHP SDK – 2-Legged OAuth Initialization

Page 30: Future of Web Apps - Miami, FL - February 2009

30

Used For:

- Private data access

PHP SDK – 3-Legged OAuth Initialization

Page 31: Future of Web Apps - Miami, FL - February 2009

31

3-Legged OAuth

getSessionedUser (session)getOwner

(session)getUser

(session)query

(session)getPresence (user)setPresence (user)listUpdates (user)listConnectionUpdates (user)insertUpdate (user)deleteUpdate (user)loadProfile (user)getConnections (user)getContacts (user)setSmallView (user)

2-Legged OAuth

setSmallView (application)query (application)

PHP SDK – Available Methods

Page 32: Future of Web Apps - Miami, FL - February 2009

32

PHP SDK – Create a User Update

Page 33: Future of Web Apps - Miami, FL - February 2009

33

PHP SDK – Set the Status of a User

Page 34: Future of Web Apps - Miami, FL - February 2009

34

YAP Code Dive Yahoo! Markup Language (YML)

Page 35: Future of Web Apps - Miami, FL - February 2009

35

YML Tags (Large View)

yml:ayml:adyml:audioyml:formyml:friend-selectoryml:if-envyml:messageyml:nameyml:profile-picyml:pronounyml:shareyml:swfyml:user-badge  

YML Lite Tags (Small View)

yml:ayml:audioyml:formyml:if-envyml:nameyml:profile-picyml:pronounyml:user-badge

YML – Available Tags

Page 36: Future of Web Apps - Miami, FL - February 2009

36

YML:A Tab Sample - Controller

Page 37: Future of Web Apps - Miami, FL - February 2009

37

YML:A Tab Sample – Tab Construction

Page 38: Future of Web Apps - Miami, FL - February 2009

38

YML:A Tab Sample - Product

Page 39: Future of Web Apps - Miami, FL - February 2009

39

YML:A Small View Update Sample

Page 40: Future of Web Apps - Miami, FL - February 2009

40

YML:A Small View Update Sample

Page 41: Future of Web Apps - Miami, FL - February 2009

41

YAP Code Dive Yahoo! Query Language (YQL)

Page 42: Future of Web Apps - Miami, FL - February 2009

42

YQL – Running a Query

Page 43: Future of Web Apps - Miami, FL - February 2009

43

YAP Code Dive Caja

Page 44: Future of Web Apps - Miami, FL - February 2009

44

Caja – JavaScript Before Cajoling

Page 45: Future of Web Apps - Miami, FL - February 2009

45

Caja – JavaScript After Cajoling

Page 46: Future of Web Apps - Miami, FL - February 2009

46

Caja - IFrame Security Concerns

IFrame Concerns

• Drive-by downloads

• Phishing attacks

• No real content restrictions

Caja Implementation

• Blacklist all / Whitelist some model

Page 47: Future of Web Apps - Miami, FL - February 2009

47

Caja – Best Practices

• Use OpenSocial JavaScript standards

• Use W3C standards

• Use YML wherever possible

• Unit test all JavaScript

• Read the documentation

(http://developer.yahoo.com/yos)

• Participate in the forums

(http://developer.yahoo.net/forum/)

Page 48: Future of Web Apps - Miami, FL - February 2009

48

Caja Practical – Running an AJAX Request

Page 49: Future of Web Apps - Miami, FL - February 2009

49

Caja Practical – Working with JSON

Page 50: Future of Web Apps - Miami, FL - February 2009

50

Caja Practical – Assigning Click Handlers

• Caja client side sanitizer strips JavaScript when

inserted in DOM following AJAX requests

• How do I assign click handlers then?

Given: DOM Node with an ID

<div id=‘myClickDiv’>Click Me!</div>

Page 51: Future of Web Apps - Miami, FL - February 2009

51

Caja Practical – Assigning Click Handlers

Step 1 – Assign click handler after innerHTML is set

Page 52: Future of Web Apps - Miami, FL - February 2009

52

Caja Practical – Assigning Click Handlers

Step 2 – Define your callback function

Page 53: Future of Web Apps - Miami, FL - February 2009

53

YAP Code Dive Common Questions

Page 54: Future of Web Apps - Miami, FL - February 2009

54

• I have an existing OpenSocial application. How do I get started?

• I have an existing Facebook application. How do I get started?

• How do I authenticate OAuth using JavaScript?

• What is a Java Module Envelope error and how do I fix it?

• Plans for other SDKs besides PHP and AS3?

• How do users find my application?

Common Questions – Q & A

Page 55: Future of Web Apps - Miami, FL - February 2009

55

Thank You Questions?