Alphageeks meetup - facebook api

Preview:

DESCRIPTION

By Liran Zelkha

Citation preview

Facebook and OpenSocial

Development

לירן זילכהמנכ"ל משותף

Liran.zelkha@alunasoft.com

AlunaIsrael’s leading Java/JavaEE and SOA

consulting companyCustomers:

How Facebook Apps workEvery profile page is made up of many

independent portlets or profile boxes.Each portlet is generated statically by a possibly

external application and stored by Facebook.It could be an iframe, but in most cases is not.Portlets are not actually changed in the profile

page – they are changed elsewhere!Facebook has mechanisms to link in applications,

and APIs for applications to communicate with Facebook.

Facebook Communication

user facebook.com application (UCT)

request for profile

profile

request for canvas

canvas

Facebook API use

update profile box, etc.

request for canvas content

canvas

What can the API doGet a list of friend ids or friends who are

running the same appGet and set notifications of eventsSet content of profile boxGet specific information on a userAdd to the Newsfeed for a userEtc.

Client LibrariesClient libraries will simplify the calls to the

platform by reducing the amount of code you have to write.

If you don’t use a client library then will have to do the following for each method

call:◦Construct a signature◦Create and send a HTTP POST request◦Parse the XML result of the request

Example ClientsFacebook Clients

◦PHP5◦Java

Independent Clients◦ActionScript◦Cocoa◦PHP4◦Ruby◦Python◦VB.NET

MethodsThe facebook API currently has 20

methods that can be used to get information from facebook accounts.

Authenticationfacebook.auth.createToken

◦creates an auth_token to be passed in as a parameter to login.php

facebook.auth.getSession◦returns the session key bound to an auth_token

Facebook Query LanguageFacebook.fql.query

◦FQL is a way to query the same facebook data you can access through the other API functions,

but with a SQL style interface.

◦SELECT name, affiliations FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE

uid1=211031) AND "Facebook" IN affiliations.name AND uid < 10

Eventsfacebook.events.get

◦returns all visible events according to the filters specified

facebook.events.getMembers◦returns membership list data associated with

an event

Friendsfacebook.friends.areFriends

◦returns whether or not each pair of specified users is friends with each other

facebook.friends.get◦returns the identifiers of the current user’s

Facebook friendsfacebook.friends.getAppUsers

◦returns the identifiers of the current user’s Facebook friends who are currently signed in

Groupsfacebook.groups.get

◦returns all visible groups according to the filters specified

facebook.groups.getMembers◦returns membership list data associated with a

group

Notificationsfacebook.notifications.get

◦returns information on outstanding Facebook notifications for current session user.

◦such as messages, friend requests, pokes, group invites and event invites

Photosfacebook.photos.addTag

◦adds a tag with the given information to a photo

facebook.photos.createAlbum◦creates and returns a new album owned by the

current session userfacebook.photos.get

◦returns all visible photos according to the filters specified

Photosfacebook.photos.getAlbums

◦returns metadata about all of the photo albums uploaded by the specified user

facebook.photos.getTags◦returns the set of user tags on all photos

specifiedfacebook.photos.upload

◦uploads a photo owned by the current session user and returns the new photo

Usersfacebook.users.getInfo

◦returns the information in a users profilefacebook.users.getLoggedInUser

◦gets the user id associated with the current session

ResponsesEach of these methods can have a

different response format depending on what you are programming in.

◦JSON (JavaScript Object Notation) ◦XML◦Facebook PHP Client

FBMLLanguage used by Facebook to specify

any fragment of Web pages.Mostly just like HTML!Forms get additional fields added to pass

Facebook parameters silently.Images are redirected to local copies.Links must be absolute (parameters do

not work as expected in all toolkits).Lots of additional Facebook-specific items

◦<fb:name uid=…> for a user’s name◦<fb:profile-pic …> for a user’s profile picture

FQLFacebook Query Language allows access

to user database with language that is similar to SQL.

Example:◦SELECT first_name FROM user WHERE

uid=$params->{user}◦To get the first name of a user based on the

user-id

Creating an ApplicationWhat you need:

◦Web Server◦API toolkit or roll-your-own

Add the Developer application to your profile.

Switch to the Developer application.Apply for a key.

What does a typical application do?Check CGI parameters.Authenticate using Facebook API.Draw configuration Web page on canvas.Allow user to update options… Write FBML to profile box.Save per-user state in database or in

filesystem.

Example: Profile Box

Example: Application Canvas

Open Social

What problem does it try to solve?Writing applications specifically for a

single API

Why?Developers

◦Can reuse apps on new social networks ◦Reduce code maintenance◦Increased potential audience for application

Site Owners◦New site immediately gains many applications◦Pre-existing broad developer base

Who Does It?

Recommended