Facebook graph api

49
graph api fagner moura - @seufagner

description

Apresentação da nova Graph API do Facebook, esta que classifica e relaciona o conteúdo da rede social em forma de um grafo contendo objects e connections e seus correlacionamentos

Transcript of Facebook graph api

Page 1: Facebook graph api

graph api

fagner moura - @seufagner

Page 2: Facebook graph api
Page 3: Facebook graph api

old REST(?) apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

Page 4: Facebook graph api

old REST(?) apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

session_key

Page 5: Facebook graph api

old REST(?) apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

session_key

Page 6: Facebook graph api

old REST(?) apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

deprecatedsession_key

Page 7: Facebook graph api

old REST apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

deprecatedsession_key

Page 8: Facebook graph api

old REST apihttps://api.facebook.com/method/[name]

• users.hasAppPermission• users.isAppUser• users.getLoggedInUser• stream.publish ...

deprecatedsession_key

Page 9: Facebook graph api
Page 10: Facebook graph api

REST ?• easy SOA• resources• only HTTP• stateless

Page 11: Facebook graph api

• lightweight• simple• readable

now, only json response

Page 12: Facebook graph api

objects

Page 13: Facebook graph api

objects

userpagemessagestatus messagephotovideo ...

Page 14: Facebook graph api

objects

https://graph.facebook.com/ID

userpagemessagestatus messagephotovideo ...

Page 15: Facebook graph api

objects

https://graph.facebook.com/19292868552

userpagemessagestatus messagephotovideo ...

Page 16: Facebook graph api

objects

https://graph.facebook.com/plataform

userpagemessagestatus messagephotovideo ...

Page 17: Facebook graph api

userpagemessagestatus messagephotovideo ... objects

+connections

Page 18: Facebook graph api

user@connections

Page 19: Facebook graph api

homefeedpostsfriendspicturephotos ... user@connections

Page 20: Facebook graph api

homefeedpostsfriendspicturephotos ...

(public data)

user@connections

https://graph.facebook.com/me/friends

https://graph.facebook.com/me/picture

Page 21: Facebook graph api

homefeedpostsfriendspicturephotos ...

(read_stream permission)

user@connections

https://graph.facebook.com/me/home

https://graph.facebook.com/me/feed

Page 22: Facebook graph api

homefeedpostsfriendspicturephotos ...

(read_stream permission)

user@connections

session_token?

Page 23: Facebook graph api

homefeedpostsfriendspicturephotos ...

(read_stream permission)

user@connections

access_token

Page 24: Facebook graph api

homefeedpostsfriendspicturephotos ...

(user_photos permission)

user@connections

access_token

Page 25: Facebook graph api

grantpermissions

• oauth 2.0• server side• client side

Page 26: Facebook graph api
Page 27: Facebook graph api

• open protocol• authentication• widely used

Page 28: Facebook graph api

• open protocol• authentication• widely used

Page 29: Facebook graph api

• oauth 2.0• server side• client side

grantpermissions

Page 30: Facebook graph api

• oauth server• user• application

actors

Page 31: Facebook graph api

server side flow

App try to accessFacebook

OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

curl -F 'client_id=113391995351148' \-F 'redirect_uri=http://facebook-buraco-debug.jogatina.com.....' \https://www.facebook.com/dialog/oauth

Page 32: Facebook graph api

server side flow

OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

curl -F 'client_id=113391995351148' \-F 'redirect_uri=http://facebook-buraco-debug.jogatina.com.....' \-F 'scope=email, read_stream' \https://www.facebook.com/dialog/oauth

App try to accessFacebook

Page 33: Facebook graph api

server side flow

OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

Cookie not found, show OAuth Dialog (facebook layout)

App try to accessFacebook

Page 34: Facebook graph api

server side flow

OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

goes to App authorization directly

App try to accessFacebook

Page 35: Facebook graph api

server side flow

access OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

don´t allow !redirect with some params like: error_reason, error, etc.

HTTP 302(redirect_url param)

Page 36: Facebook graph api

server side flow

access OAuth Dialog(App Authorization)

OAuth Dialog(User Authentication)

allow !

redirect with authorization code param

HTTP 302(redirect_url param)

Page 37: Facebook graph api

server side flow

Authorization) http://mydomain...

curl -F 'client_id=113391995351148' \-F 'redirect_uri=http://facebook-buraco-debug.jogatina.com.....' \-F 'client_secret=f8138690fe947221d4d2c071aa945395' \

-F 'code=[authorization code here]' \

https://graph.facebook.com/oauth/access_token

OAuth Dialog(App Authorization)

Page 38: Facebook graph api

server side flow

{ "error": {"type": "OAuthException", "message": "Error validating verification code." }

}

HTTP 400Authorization) http://mydomain...

Page 39: Facebook graph api

server side flow

Sucessfull authenticated !

access_token in the body of the request

HTTP 302(redirect_url param)Authorization) http://mydomain...

Page 40: Facebook graph api

• oauth 2.0• server side• client side

grantpermissions

Page 41: Facebook graph api

client side flow

• desktop• mobile• javascript

Page 42: Facebook graph api

HTTP requestOAuth Dialog(App Authorization)

client side flow

curl -F 'client_id=113391995351148' \-F 'redirect_uri=http://facebook-buraco-debug.jogatina.com.....' \-F ‘response_type=token' \https://www.facebook.com.br/dialog/oauth

Page 43: Facebook graph api

HTTP request

client side flow

HTTP 302(redirect_url param)

Pass URI fragment with access_tokenhttp://jogatina.com....#access_token=gzZ666a..&expires_in=64090

Page 44: Facebook graph api

{ "error": {"type": "OAuthException", "message": "Error validating verification code." }

}

HTTP request

client side flow

HTTP 400

Page 45: Facebook graph api

services available

• reading• searching• publishing• ...

curl -F ‘fields=id,name,picture' \-F ‘access_token=...' \https://graph.facebook.com/fagner.moura

Page 46: Facebook graph api

services available

• reading• searching• publishing• ...

curl -F ‘q=futebol' \-F ‘type=user' \https://graph.facebook.com/search

Page 47: Facebook graph api

services available

• reading• searching• publishing• ...

curl -F ‘message=Jogue no Jogatina hoje' \-F ‘access_token=...’ \https://graph.facebook.com/fagner.moura/feed

Page 48: Facebook graph api

services available

• reading• searching• publishing• ...

paginginsights

deleting

real time update

Page 49: Facebook graph api

:-)

fagner moura - @seufagner