3. How Facebook Apps work
Every 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.
4. Facebook Communication
request for profile
profile
request for canvas
request for canvas content
Facebook API use
update profile box, etc.
canvas
canvas
user facebook.com application (UCT)
5. What can the API do
Get a list of friend ids or friends who are
running the same app
Get and set notifications of events
Set content of profile box
Get specific information on a user
Add to the Newsfeed for a user
Etc.
6. Client Libraries
Client 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
8. Methods
The facebook API currently has 20
methods that can be used to get
information from facebook accounts.
9. Authentication
facebook.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
10. Facebook Query Language
Facebook.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
11. Events
facebook.events.get
◦ returns all visible events according to the filters
specified
facebook.events.getMembers
◦ returns membership list data associated with
an event
12. Friends
facebook.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 friends
facebook.friends.getAppUsers
◦ returns the identifiers of the current user’s
Facebook friends who are currently signed in
13. Groups
facebook.groups.get
◦ returns all visible groups according to the
filters specified
facebook.groups.getMembers
◦ returns membership list data associated with a
group
14. Notifications
facebook.notifications.get
◦ returns information on outstanding Facebook
notifications for current session user.
◦ such as messages, friend requests, pokes,
group invites and event invites
15. Photos
facebook.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 user
facebook.photos.get
◦ returns all visible photos according to the filters
specified
16. Photos
facebook.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
specified
facebook.photos.upload
◦ uploads a photo owned by the current session
user and returns the new photo
17. Users
facebook.users.getInfo
◦ returns the information in a users profile
facebook.users.getLoggedInUser
◦ gets the user id associated with the current
session
18. Responses
Each of these methods can have a
different response format depending on
what you are programming in.
◦ JSON (JavaScript Object Notation)
◦ XML
◦ Facebook PHP Client
19. FBML
Language 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
20. FQL
Facebook 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
21. Creating an Application
What 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.
22.
23.
24.
25.
26. 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.
30. What problem does it try to solve?
Writing applications specifically for a
single API
31.
32. Why?
Developers Site Owners
◦ Can reuse apps on ◦ New site
new social networks immediately gains
◦ Reduce code many applications
maintenance ◦ Pre-existing broad
◦ Increased potential developer base
audience for
application