Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Anexos
DUZAN LEANDRO
LIBERAL MATIAS
POROLLI MATIAS
ZANUSO FRANCO
Ingeniería en Sistemas de Información PROYECTO - 2011
Contenido
Objects..........................................................................................................................................7
Album........................................................................................................................................7
Ejemplo..................................................................................................................................7
Propiedades...........................................................................................................................7
Conexiones............................................................................................................................7
Editorial.................................................................................................................................8
Application................................................................................................................................8
Ejemplo.................................................................................................................................8
Propiedades...........................................................................................................................8
Conexiones............................................................................................................................9
Checkin....................................................................................................................................10
Propiedades.........................................................................................................................10
Editorial................................................................................................................................11
Comment.................................................................................................................................11
Ejemplo................................................................................................................................11
Propiedades.........................................................................................................................12
Conexiones..........................................................................................................................12
Editorial...............................................................................................................................12
Domain....................................................................................................................................12
Example...............................................................................................................................12
Propiedades.........................................................................................................................13
Event.......................................................................................................................................13
Ejemplo................................................................................................................................13
Propiedades.........................................................................................................................13
Conexiones..........................................................................................................................14
Editorial...............................................................................................................................15
FriendList.................................................................................................................................15
Ejemplo................................................................................................................................15
Introducción
En los anexos presentaremos información que puede llegar a resultar útil para las siguientes
etapas posteriores al relevamiento, detalles muy específicos de conceptos mencionados y
explicados en el relevamiento detallado y políticas de privacidad de Facebook.
Objects
Album
A photo album
Ejemplo
Propiedades
Name Description Permissions Returns
id
The photo album ID Publicly available A JSON string
from The profile that created A JSON object containing
Publicly available
this album the id and name fields
name
The title of the album Publicly available A JSON string
Available to
message The description of the
everyone in A JSON string
album
Facebook
Available to
location
The location of the album everyone on A JSON string
Facebook
link A link to this album on A JSON string containing a
Publicly available
Facebook valid URL
Available to
privacy The privacy settings for
everyone on A JSON string
the album
Facebook
count The number of photos in
Publicly available A JSON string
this album
created_time The time the photo album A JSON string containing a
Publicly available
was initially created IETF RFC 3339 datetime
updated_time The last time the photo A JSON string containing a
Publicly available
album was updated IETF RFC 3339 datetime
Conexiones
Name Description Permissions Returns
To create a new, empty photo album, POST the album name and optional description to
http://graph.facebook.com/PROFILE_ID/albums.
Check out the Photo documentation for more information about publishing photos to
albums.
curl -F 'access_token=...' \
-F 'name=My new photo album' \
-F 'message=My photo album description' \
https://graph.facebook.com/me/albums
Application
An application registered on Facebook Platform. The Graph API supports querying for
information on existing applications. To create, administer or delete applications developers
must go to the Developer Application.
Ejemplo
Propiedades
Name Description Permissions Returns
Id Publicly
The application ID A JSON string
available
name Publicly
The title of the application A JSON string
available
description The description of the application Publicly
A JSON string
written by the 3rd party developers available
category Publicly
The category of the application A JSON string
available
link A link to application dashboard on Publicly A JSON string
Facebook available containing a valid URL
feed Publicly
The application's wall An array of Post objects
available
posts Publicly
The applications's own posts An array of Post objects
available
The application's logo with
maximum dimensions of An HTTP 302 with the
picture Publicly
75x75 pixels suitable for location set to the picture
available
embedding as the source of an URL
image tag
The photos, videos, and posts
tagged Publicly An array of Post, Photo or
in which this application has
available Video objects
been tagged
links Publicly
The application's posted links An array of Link objects
available
photos The photos this application Publicly
An array of Photo objects
has uploaded available
albums The photo albums this page Publicly
An array of Album objects
has created available
statuses The application's status Publicly An array of Status
updates available message objects
videos The videos this application has Publicly
An array of Video objects
created available
notes Publicly
The application's notes An array of Note objects
available
events The events this page is Publicly
An array of Event objects
managing available
All of the subscriptions this Requires an
subscriptions An array of Subscription
application has for real-time application
objects
notifications access token
Requires an
insights Usage metrics for this An array of Insight
application
application objects
access token
An array of JSON objects
Requires an containing id,
accounts Test User accounts associated
application access_token and
with the application
access token login_url for the test
users
reviews Publicly
Reviews of this application An array of Review objects
available
Checkin
You can search, read and publish checkins. Every checkin is associated with a checkin ID
that represents an object in the graph. These checkins are then associated with locations
represented by Facebook Pages or Open Graph protocol pages.
To get a user's checkins, request the user_checkins extended permission. To see the user's
friends' checkins, request the friends_checkins extended permission.
GET https://graph.facebook.com/[checkin_id]
You can search for recent checkins for an authorized user and his or her friends:
GET https://graph.facebook.com/search?
type=checkin&access_token=ACCESS_TOKEN
You can search for places near a specific location (distance is in meters):
GET https://graph.facebook.com/search?
q=pizza&type=place¢er=lat,long&distance=1000
Propiedades
Name Description Permissions Returns
id
The checkin ID user_checkins JSON string
A JSON object containing the
from The ID and name of the user user_checkins
name and Facebook id of the
who made the checkin
user who made the checkin
tags The users the author tagged user_checkins Contains in data a list of the
in the checkin users tagged in this checkin
Information about the
place Facebook Page that user_checkins
A JSON object containing the
represents the location of the Page id, name, and location
checkin
To publish a checkin, POST the user coordinates and the Place ID and optionally add
attachments like link, picture etc. similar to Post to the checkins of the user, i.e.,
http://graph.facebook.com/PROFILE_ID/checkins.
curl -F 'access_token=...' \
-F 'message=The coffee is just meh.' \
-F 'place=PAGE_ID' \
-F 'coordinates={"latitude":"...", "longitude": "..."}' \
-F 'tags=USER_ID1, USER_ID2' \
https://graph.facebook.com/me/checkins
Comment
Ejemplo
Propiedades
Name Description Permissions Returns
curl -F 'access_token=...' \
https://graph.facebook.com/19292868552_475058873552_14173716/likes
Domain
Example
http://graph.facebook.com?domain=www.facebook.com
http://graph.facebook.com?domains=www.facebook.com,www.example.com
Propiedades
Name Description Permissions Returns
id
The id of the domain Publicly available A JSON string
name
The name of the domain Publicly available A JSON string
Event
A Facebook event
Specifies information about an event, including the location, event name, and which
invitees plan to attend. The following examples show how to create and edit an event:
curl -d "name=test&start_time=1272718027&location=someplace"
https://graph.facebook.com/PROFILE_ID/events
RSVP to an Event
curl -d "access_token=XXX"
https://graph.facebook.com/EVENT_ID/{attending|maybe|declined}
Ejemplo
Propiedades
Name Description Permissions Returns
id Publicly
The event ID A JSON string
available
owner The profile that Publicly A JSON object containing id and name
created the event available fields
name Publicly
The event title A JSON string
available
The long-form
description Publicly
description of the A JSON string
available
event
A JSON string containing an ISO-8601
The start time of the formatted date/time or a UNIX timestamp;
start_time event, as you want Publicly if it contains a time zone (not
it to be displayed available recommended), it will be converted to
on facebook Pacific time before being stored and
displayed
A JSON string containing an ISO-8601
The end time of the formatted date/time or a UNIX timestamp;
end_time event, as you want Publicly if it contains a time zone (not
it to be displayed available recommended), it will be converted to
on facebook Pacific time before being stored and
displayed
location The location for Publicly
A JSON string
this event available
venue The location of this Publicly A JSON object containing street, city,
feed Publicly
This event's wall An array of Post objects
available
All of the users who have
Available to A JSON array containing objects
noreply been not yet responded to
everyone on with id, name and rsvp_status
their invitation to this
Facebook fields
event
All of the users who have
Available to A JSON array containing objects
maybe been responded "Maybe"
everyone on with id, name and rsvp_status
to their invitation to this
Facebook fields
event
Available to A JSON array containing JSON
invited All of the users who have
everyone on objects with id, name and
been invited to this event
Facebook rsvp_status fields
Available to A JSON array containing objects
attending All of the users who are
everyone on with id, name and rsvp_status
attending this event
Facebook fields
All of the users who Available to A JSON array containing JSON
declined
declined their invitation to everyone on objects with id, name and
this event Facebook rsvp_status fields
Returns a HTTP 302 with the URL
picture Publicly of the event's picture (use ?
The event's profile picture
available type=small | normal | large to
request a different photo)
Editorial
curl -F 'access_token=...' \
-F 'name=My birthday' \
-F 'start_time=' \
-F 'end_time=' \
FriendList
Ejemplo
Propiedades
Name Description Permissions Returns
members All of the users who are Publicly An array of JSON objects containing
members of this list available friend id and name fields
Editorial
curl -F 'access_token=...' \
https://graph.facebook.com/me/friendlists?name=old-school-friends
A Facebook group
Ejemplo
Propiedades
Name Description Permissions Returns
id Publicly
The group ID A JSON string
accessible
icon The URL for the Publicly A JSON string containing a valid
group's icon accessible URL
owner The profile that created Publicly A JSON object containing the id
this group accessible and name fields
name Publicly
The name of the group A JSON string
accessible
description A brief description of Publicly
A JSON string
the group accessible
link The URL for the Publicly A JSON string containing a valid
group's website accessible URL
privacy The privacy setting of Publicly A JSON string containing 'OPEN',
the group accessible 'CLOSED', or 'SECRET'
updated_time The last time the group Publicly A JSON string containing a IETF
was updated accessible RFC 3339 datetime
Conexiones
Name Description Permissions Returns
feed Publicly
This group's wall An array of Post objects
available
All of the users who are members An array of JSON objects
members Publicly
of this group (can only currently containing id, name, and
available
return the first 500 members) administrator fields
picture Publicly HTTP 302 with the URL of the
The profile picture of this group
available group's profile picture
docs Publicly
The docs in this group An array of Doc objects
available
Editorial
Insights
Available metrics include application and page hits, adds, removes, and likes. The FQL
Insights Documentation contains a complete list of available metrics.
Without a session, an application can retrieve only its own metrics. With a user session, it is
possible to retrieve data for all applications, pages, and domains owned by the session user.
Reading this data requires the read_insights permission.
Ejemplo
https://graph.facebook.com/2439131959/insights/application_active_users (Graffiti)
Propiedades
Name Description Permissions Returns
id
Requires
ID of the insight read_insight JSON string
permission
Requires
name
Name of the insight read_insight JSON string
permission
Length of the period Requires
period JSON string containing 'day', 'week' or
during which the read_insight
'month'
insights were collected permission
A JSON array of objects containing the
values Individual data points Requires
read_insight
value (a JSON number) and end_time
for the insight permission (A JSON string containing a IETF RFC
3339 datetime) fields
Ejemplo
Propiedades
Name Description Permissions Returns
id Publicly
The link ID A JSON string
accessible
from Publicly A JSON object containing
The user that created the link
accessible the id and name field
link Publicly A JSON object contain a
The URL that was shared
accessible valid URL
name Publicly
The name of the link A JSON string
accessible
caption The caption of the link (appears Publicly
A JSON string
beneath the link name) accessible
A description of the link
description Publicly
(appears beneath the link A JSON string
accessible
caption)
A URL to the link icon that
icon Publicly A JSON string containing a
Facebook displays in the news
accessible valid URL
feed
picture A URL to the thumbnail image Publicly A JSON string containing a
used in the link post accessible valid URL
message The optional message from the Publicly
A JSON string
user about this link accessible
created_time The time the message was Publicly A JSON string containing a
published accessible IETF RFC 3339 datetime
Conexiones
Name Description Permissions Returns
comments All of the comments Publicly An array of JSON objects containing id,
on this link available from, message and created_time fields
Editorial
curl -F 'access_token=...' \
-F 'link=http://www.example.com/article.html' \
-F 'picture=http://www.example.com/article-thumbnail.jpg' \
-F 'name=Article Title' \
-F 'caption=Caption for the link' \
-F 'description=Longer description of the link' \
https://graph.facebook.com/me/feed
Message
An individual message in the new Facebook messaging system. Every message has a
message ID that represents an object in the Graph. To get access to read a user's messages,
you should request the read_mailbox Extended Permission.
GET https://graph.facebook.com/[message_id]
GET https://graph.facebook.com/[thread_id]/messages
Propiedades
Name Description Permissions Returns
Note
A Facebook note
Ejemplo
Propiedades
Name Description Permissions Returns
id Available to everyone
The note ID A JSON string
on Facebook by default
from The profile that created Available to everyone A JSON object containing
the note on Facebook by default id and name fields
subject Available to everyone
The title of the note A JSON string
on Facebook by default
message Available to everyone A JSON string containing
The content of the note
on Facebook by default HTML text
created_time The time the note was Available to everyone A JSON string containing
initially published on Facebook by default a IETF RFC 3339 datetime
updated_time The time the note was Available to everyone A JSON string containing
last updated on Facebook by default a IETF RFC 3339 datetime
icon The icon that Facebook Available to everyone A JSON string containing
displays with notes on Facebook by default a valid URL
Conexiones
Name Description Permissions Returns
Editorial
To publish a note, POST the subject and message fields to the profile (User or Page) at
http://graph.facebook.com/PROFILE_ID/notes.
curl -F 'access_token=...' \
-F 'subject=This is a note' \
-F 'message=Test note.' \
https://graph.facebook.com/me/notes
Page
A Facebook Page. This object supports Real-Time Updates for all properties except the
ones marked with a *. Also note that the properties below show the common properties of
all Pages. Pages in specific categories have additional fields depending on category.
Ejemplo
Propiedades
Name Description Permissions Returns
id
The Page's ID Publicly available A JSON string
name
The Page's name Publicly available A JSON string
category
The Page's category Publicly available A JSON string
likes
* The number of users who like the Page Publicly available A JSON number
Conexiones
Name Description Permissions Returns
Photo
Ejemplo
Propiedades
Name Description Permissions Returns
Available to
id everyone on
The photo ID A JSON string
Facebook by
default
Available to
The profile (user or
from everyone on A JSON object containing id and
page) that posted this
Facebook by name fields
photo
default
tags The tagged users and Available to An array of JSON objects, the x
To publish a photo, issue a POST request with the photo file attachment as
multipart/form-data.
You can publish a photo to a specific, existing photo album with a POST to
http://graph.facebook.com/ALBUM_ID/photos.
If you would like to suppress the story that is automatically generated in the user's feed
when you publish a photo (usually because you plan on generating your own), you can add
a no_story=1 parameter. In this case, the user will receive a notification that your
application has uploaded a photo.
curl -F 'access_token=...' \
-F 'source=@file.png' \
-F 'message=Caption for the photo' \
https://graph.facebook.com/me/photos
Post
Ejemplo
Propiedades
Name Description Permissions Returns
id
The post ID read_stream JSON string
from Information read_stream A JSON object containing the name and
about the user Facebook id of the user who posted the
who posted the
To publish a wall post, POST the message and optional attachment to the feed/wall of the
user, page or group, i.e., http://graph.facebook.com/PROFILE_ID/feed. When
publishing to a Page, to target a post to users in a specific location or language, use the
appropriate values from the following files: all cities (CSV), major cities (CSV), locales
(CSV), cities and locales (JSON).
curl -F 'access_token=...' \
-F 'message=Check out this funny article' \
-F 'link=http://www.example.com/article.html' \
-F 'picture=http://www.example.com/article-thumbnail.jpg' \
-F 'name=Article Title' \
-F 'caption=Caption for the link' \
-F 'description=Longer description of the link' \
-F 'actions={"name": "View on Zombo", "link":
"http://www.zombo.com"}' \
-F 'privacy={"value": "ALL_FRIENDS"}' \
-F 'targeting= {"countries":"US","regions":"6,53","locales":"6"}' \
https://graph.facebook.com/me/feed
Ejemplo
Propiedades
Name Description Permissions Returns
Status message
Ejemplo
Propiedades
Name Description Permissions Returns
Publicly available to
id The status message
everyone on Facebook by A JSON string
ID
default
Publicly available to
from The user who posted A JSON object containing
everyone on Facebook by
the message id and name fields
default
To publish a status update, POST the message field to the feed/wall of the user whose status
you want to update, i.e., http://graph.facebook.com/USER_ID/feed.
curl -F 'access_token=...' \
-F 'message=This is my status update' \
https://graph.facebook.com/me/feed
Subscription
A subscription to an application to get real-time updates for an Graph object type. For more
details, see the Real-time Overview.
Ejemplo
https://graph.facebook.com/APP_ID/subscriptions (APP_NAME)
Propiedades
Name Description Permissions Returns
Available to
object The object type to subscribe A JSON string containing
everyone in
to code or permissions
Facebook by default
fields The list of fields for the Available to A JSON string containing
object type everyone in a comma-seperated list of
To create a subscription, issue a POST request with the object, fields and callback_url
to the application/subscriptions connection.
curl https://graph.facebook.com/APP_ID/subscriptions \
-F 'access_token=...' \
-F 'object=user' \
-F 'fields=activities,friends,feed' \
-F 'callback_url=http://www.site.com/callback.php' \
-F \
'verify_token=a_secret_you_want_echoed'
Thread
A message thread in the new Facebook messaging system. Every thread has a thread ID
that represents an object in the Graph. To get access to read a user's threads, you should
request the read_mailbox Extended Permission. This is a read only API.
You can GET individual message threads by specifying the thread ID:
GET https://graph.facebook.com/[thread_id]
GET https://graph.facebook.com/[user_id]/threads
GET https://graph.facebook.com/[user_id]/threads?q=hello
GET https://graph.facebook.com/[user_id]/threads?q=hello&tags=other
For a full list of tags, please see the unified_thread FQL table.
Propiedades
Name Description Permissions Returns
Conexiones
Name Description Permissions Returns
User
A user profile. This object supports Real-Time Updates for all properties except the
verified property.
Ejemplo
Propiedades
Name Description Permissions Returns
id The user's
Publicly available A JSON string
Facebook ID
name The user's
Publicly available A JSON string
full name
first_name The user's
Publicly available A JSON string
first name
last_name The user's
Publicly available A JSON string
last name
gender The user's
Publicly available A JSON string
gender
A JSON string
containing the
locale The user's
Publicly available ISO Language
locale
Code and ISO
Country Code
The URL of
A JSON string
link the profile for
Available to everyone on Facebook containing a
the user on
valid URL
Facebook
The user's
username
Facebook Publicly available A JSON string
username
An
anonymous,
third_party_id
but unique Available to everyone on Facebook A JSON string
identifier for
the user
The user's
timezone timezone A JSON
Available only for the current user
offset from number
UTC
The last time A JSON string
updated_time the user's containing a
Available to everyone on Facebook
profile was IETF RFC
updated 3339 datetime
The user's
verified account A JSON
Available to everyone on Facebook
verification boolean
status
The blurb
that appears Requires user_about_me or
about
friends_about_me permission
A JSON string
under the
An individual video
Example
Publishing
To publish a video, issue a POST request with the video file attachment as multipart/form-
data to https://graph-video.facebook.com/me/videos. Here’s a simple PHP example:
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_POST_LOGIN_URL";
$video_title = "YOUR_VIDEO_TITLE";
$video_desc = "YOUR_VIDEO_DESCRIPTION";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&scope=publish_stream";
echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);
$post_url = "https://graph-video.facebook.com/me/videos?"
. "title=" . $video_title. "&description=" . $video_desc
. "&". $access_token;
The video will be published to the uploader's own wall. Note that the URL has to be graph-
video.facebook.com, not graph.facebook.com.
Available to everyone
id
The video ID on Facebook by A JSON string
default
Available to everyone A JSON object
from The profile (user or page)
on Facebook by containing id and name
that created the video
default fields
Available to everyone An array of JSON
tags The users who are tagged in
on Facebook by objects containing id
this video
default and name fields
Available to everyone
name
The video title or caption on Facebook by A JSON string
default
The html element that may Available to everyone
embed_html A JSON string
be embedded in an Web page on Facebook by
containing a valid URL
to play the video default
The icon that Facebook Available to everyone
icon A JSON string
displays when video are on Facebook by
containing a valid URL
published to the Feed default
Available to everyone
source A URL to the raw, playable A JSON string
on Facebook by
video file containing a valid URL
default
Available to everyone A JSON string
created_time The time the video was
on Facebook by containing a IETF RFC
initially published
default 3339 datetime
Available to everyone A JSON string
updated_time The last time the video or its
on Facebook by containing a IETF RFC
caption were updated
default 3339 datetime
Conexiones
Name Description Permissions Returns
Available to everyone
likes All of the likes on this An array of JSON objects
on Facebook by
video containing id and name fields
default
Available to everyone An array of JSON objects
comments All of the comments on
on Facebook by containing id, from, message and
this video
default created_time fields
The image which Available to everyone
picture An HTTP 302 with the URL of the
represents the content on Facebook by
album's cover picture
of the video default
Tópicos avanzados
Dialogs
Dialogs provide a simple, consistent interface to display dialogs to users. Dialogs do not
require special user permissions because they require user interaction. Dialogs can be used
in any type of application, whether on Facebook.com, a website, or a mobile application.
You can integrate Dialogs into your application by constructing the URLs documented
below, or by using a helper method in one of the Facebook Platform SDKs:
Dialog URLs
Every dialog has a method name and parameters. The URL to a dialog always starts with
http://www.facebook.com/dialog/
followed by the name of the dialog and parameters. For example, to ask a user to post a
story to their Wall, send them to the Feed Dialog with required parameters:
http://www.facebook.com/dialog/feed?
app_id=123050457758183&
redirect_uri=http://www.example.com/response/
Click here to try the above URL yourself. The user will see a dialog that looks like below
(though the one below has extra parameters). If the user is not already logged into
Facebook, they will be asked to log in before being shown the dialog.
Common Parameters
Display Modes
Platform Dialogs are all built to seamlessly run in a variety of display contexts on both the
web and mobile.
page: By default, dialogs run in full-page mode with a Facebook header and footer.
This is appropriate for apps that do a full-page redirect in a normal desktop/laptop
web browser.
popup: For use in a browser popup no bigger than 400px by 580px. Use this display
type to maintain context for the user while on an external website.
On Facebook canvas pages, Dialogs are supported only for iframe applications. For FBML
applications, you can use some of the dialogs through specific FBJS methods.
To show a dialog to a user on a mobile device, change the subdomain of the dialog URL
from www to m. Facebook will default to an appropriate view based on the user agent. To
override that choice, you can explicitly specify one of two mobile display modes:
touch: Used on smartphone mobile devices, like iPhone and Android. Use this for
tablets with small screens (i.e., under 7 inches) as well.
wap: Display plain HTML (without JavaScript) on a small screen, such as a Nokia
7500.
http://m.facebook.com/dialog/feed?
app_id=123050457758183&
redirect_uri=http://www.example.com/response/&
display=touch
Dialogs
Feed Dialog
Friends Dialog
OAuth Dialog
Pay Dialog
Prompt a payment
Requests Dialog
Requests Dialog
FQL
Facebook Query Language, or FQL, enables you to use a SQL-style interface to query the
data exposed by the Graph API. It provides for some advanced features not available in the
Graph API, including batching multiple queries into a single call.
Queries are of the form SELECT [fields] FROM [table] WHERE [conditions]. Unlike
SQL, the FQL FROM clause can contain only a single table. You can use the IN keyword in
SELECT or WHERE clauses to do subqueries, but the subqueries cannot reference variables in
the outer query's scope. Your query must also be indexable, meaning that it queries
properties that are marked as indexable in the documentation below.
FQL can handle simple math, basic boolean operators, AND or NOT logical operators, and
ORDER BY and LIMIT clauses.
For any query that takes a uid, you can pass me() to return the logged-in user. For
example:
Other functions that are available are now(), strlen(), substr() and strpos().
For more information, check out the tables below, most of which have sample queries
demonstrating their use. Also check out the Performance Guide for tips on optimizing your
FQL.
Tables
album
application
checkin
Query this table to return information about a checkin. By default, this query returns the
last 20 checkins and returns a maximum of 500 checkins.
comment
Query this table to obtain comments associated with one or more fb:comments/Feed story
comment XIDs.
comments_info
The comments_info FQL table. Query this table to obtain XIDs for fb:comments objects
associated with an application ID.
connection
Query this table to return a user's friends and the Facebook Pages to which the user is
connected.
cookies
Query this table to return the application IDs for which the specified user is listed as a
developer in the Developer application.
domain
The domain table provides a read-only mapping between domain names and ids.
domain_admin
event
event_member
Query this table to return information about a user's status for an event.
family
friend
Query this table to determine whether two users are linked together as friends.
friend_request
Query this table either to determine which users have sent friend requests to the logged-in
user or to query whether a friend request has been sent from the logged-in user to a specific
user.
friendlist
Query this table to return any friend lists owned by the specified user.
friendlist_member
Query this table to determine which users are members of a friend list.
group
group_member
insights
The insights table contains statistics about applications, pages and domains
like
Query this table to return the user IDs of users who like a given Facebook object (video,
note, link, photo, or photo album).
link
Query this table to return the links the current user has posted.
link_stat
Query this table to return detailed information from your Facebook Share implementation.
mailbox_folder
message
note
Query this table to return the notes the current user has written or to return details for a
particular note.
notification
Query this table to get the notifications for the current session user, that is, any notification
that appears on http://www.facebook.com/notifications.php.
object_url
Query this table to return information about a URL in the Open Graph
page_admin
Query this table to return information about the admin of a Facebook Page.
page_fan
Query this table to return information about the fan of a Facebook Page.
permissions
Query this table to return the extended permissions the current user has granted to the
application.
permissions_info
Query this table to return more descriptive information about extended permissions.
photo
photo_tag
place
privacy
Query this table to return a user's privacy setting for a given object_id.
profile
Query this table to return certain (typically publicly) viewable information from a user's
profile or Facebook Page that is displayed in a story.
review
standard_friend_info
Query this table to determine whether two users are linked together as friends.
standard_user_info
Query this table to return standard information about a user, for use when you need analytic
information only.
status
stream
Query this table to return posts from a user's stream or the user's profile.
stream_filter
Query this table to return a filter_key that can be used to query the stream FQL table, as
seen through any content filters the user has available on Facebook.
stream_tag
Query this table to return associations between users or Facebook Pages and the items they
tag in status posts.
thread
Query this table to return information about message threads in a user's Inbox.
translation
Query this table to return the native strings (original, untranslated text in your application
interface) and the translated strings for your application.
unified_message
This table can be used to access information about messages in the new Facebook
messaging system.
unified_thread
unified_thread_action
This table should be used to access information about subscribe and unsubscribe actions
performed on a thread in the new Facebook messaging system.
unified_thread_count
This table should be used to access information about the number of threads in a folder in
the new Facebook messaging system.
user
video
video_tag
Internationalization API
Facebook is currently available in over 70 languages, thanks to a framework that allows our
user community to translate the text on Facebook. By integrating with Facebook, you can
take advantage of our Translations framework immediately, so you can enjoy the benefits
that translation can bring to your Platform application or website.
Facebook locales follow ISO language and country codes respectively, concatenated by an
underscore.
The basic format is ''ll_CC'', where ''ll'' is a two-letter language code, and ''CC'' is a two-
letter country code. For instance, 'en_US' represents US English.
There are two exceptions that do not follow the ISO standard: ar_AR and es_LA. We use
these to denote umbrella locales for Arabic and Spanish, despite in the latter case having a
few more specialized localizations of Spanish.
You can determine this information about a user by examining the locale field of the User
Graph API object.
If you're rendering a social plugin in an IFrame, Facebook automatically translates the text
because it's based on the viewing user's locale.
If you're using XFBML, you need to load the JavaScript SDK in the appropriate locale for
your site. For example, if your site is in Spanish, reference this script:
http://connect.facebook.net/es_LA/all.js
The following steps assume you have created an application and have an application ID.
In order to opt into the Facebook Translations framework, you need to set the native
language for your application, then you need to decide into which languages you want your
application translated.
Once you configure your application's native language, you need to specify into which
languages you want your application translated.
1. Visit the Translations admin panel for your application. Select which application
you want to translate from the dropdown menu in the upper right corner.
2. Enable a language for translation. To enable translation of your application into a
particular locale, select the row for the appropriate Language, then check the On
check box for that locale. After checking it, users can see any strings that you mark
as translatable, and can provide translations for them.
Note: If this check box is NOT checked, the only people who can translate your
application into this language are the application's developers (listed in the
Facebook Developer application) and those designated as the language managers for
this language in the Language Managers column.
Once you initiate the translation process, you'll return to the Translations dashboard when
you need to do more administration. For now, these steps are the ones necessary to get
started.
Text can come from a lot of places, and it's important that if your application is available in
a language that everything is translatable. The following is an exhaustive list of all places
that you may find content you need to prepare for the translation process.
Use FBML (for FBML applications) or XFBML (for Facebook websites or IFrame
applications) markup tags for this text.
There is a list of static text about your application that you may enter on facebook.com
which you may want to have translated. Each of these fields, when submitted or updated on
Application Name
Application Description
Tab Name
Attachment Text
Description (from the Application Profile)
About the Developers (from the Application Profile)
Once a translation is ready for any of these fields from the Translations application, it will
automatically get used on Facebook without any further effort on the part of the developer.
Wrap the text using the FBML internationalization markup tags. Then, use
intl.uploadNativeStrings if you want to register the text to be translatable by users before
actually sending it.
You may have content that isn't rendered directly. For instance, if your application is an
online store, you might store a list of item names of your inventory. In order for this text to
be registered for translation, use intl.uploadNativeStrings to register all variations of the
text that include each item from your database.
Note: This technique should not apply to strings that change frequently, or are user-
generated. Each application has a static limit for the number of strings that may be
registered at any given time, so it's important to avoid submitting dynamic content for
translation.
This content cannot be translated directly using Facebook Translations. If you want to serve
internationalized images, you need to generate an image for each language you wish to
support, and determine the user's locale (for example, via users.getInfo) to decide which
image to serve them.
In order for you to submit structured text for use with Facebook Translations, there are a
number of FBML and XFBML tags that have been added to accomplish this.
Example Code
Let's say you have the following FBML in your application (or XFBML on your site):
When Facebook renders the FBML, this would yield the proper English sentence 'Give
James a copy of "Catcher In the Rye"?'. However, in order to render it in a way that is
translatable, this line must be converted to the following:
The variable text (the book title) is a token formatted in curly brackets, since you
don't want the actual book title to be part of the translatable text. This string,
including the token, is what translators will need to be able to translate, using only
the description as context. Wrapping the text in fb:intl-token places the variable text
into the string at render time. The name attribute must be the string in the token(s) it
is meant to replace. While these components generally can be ordered in any way,
you should do something similar to the above, for the sake of readability and to
prevent forgetting tokens.
The translatable message still contains the fb:name tag. This tag gets displayed as a
token when the string is presented to translators, but the token is inserted by
Facebook's translation system. You do not need to put it inside curly braces
Once your FBML text uses these tags, it will be uploaded to the Translations application on
the first canvas page load containing this FBML. After that initial page load, it will be
translatable both in the Translations application as well as inline by Facebook users. Once
the text is translated in, say, Spanish, it will appear to users browsing in the Spanish locale.
Best Practices
Much of this may become clearer after reading the best practices for advice on how to best
prepare your applications. We strongly encourage you to do so.
Now that you prepared your application or site for translation and registered all the text you
want translated, you can start getting the text translated. Any Facebook user can translate
your application, but it's much easier for people who have already authorized your
application.
Inline Translations
Users can translate strings inline if they've enabled this mode of translation. The screenshot
below shows what inline translation mode looks like to a user. Underlined strings are
available for translation (and voting) simply by right-clicking on the underlined text.
Users can enable inline translating by clicking the link in the Translations dialog on the
status bar.
Bulk Translation
The Translations application has a user interface that allows translators to quickly and
efficiently translate many strings. To direct a user to translate your application's strings in
bulk, link them to http://www.facebook.com/translations/index.php?translate?
app=<YOUR_APP_ID>, specifying your application ID.
Learn More
The best way to learn how your application can be translated is to actually try it out. The
Facebook Translations application has a help guide for getting started with translating. This
may help you better understand the process.
Use the Translations admin panel to manage the translation process for your applications.
1. Visit the Translations admin panel for your application. If the default selection is
not the application you wish to translate, select the right one from the dropdown in
the upper right corner.
Facebook Translations has multiple ways for you to view and access the text you've
registered for translation, as well as the translations provided by Facebook users. The
translation data retrieved from these methods may be used or stored however you choose.
You can always view and edit your text and translations from the Translations admin
console. However, you can't export translations from the console currently. You can get the
translations programmatically.
Calling the intl.getTranslations API method. Call this method to easily query all
of your translations for a particular language.
Querying the translation FQL table. Query this table for a very select set of
translation data.
Best Practices
We may make many assumptions when working with text in code, which may not always
hold true in other languages. To help you prepare your application for most languages and
quirks, we offer these best practices and lessons learned by the Facebook
internationalization team. Unless otherwise indicated, these examples apply to both FBML
and XFBML markup.
Be Descriptive
In general, text under 20 characters should have a description (use the desc attribute). A
word like "Poke" can vary if it is used as a noun or a verb. Facebook Translations works by
creating a hash value from the text and description of the phrase. That means that even a
slight change to the original text or description will cause your string to be counted as a
completely new one. So err on the side of starting off with a complete description you won't
have to clarify later. For example, do this:
In some languages, the word for "name" is different depending on whether it's the name of
a person, a place, or an object. A description here allows a translator to choose the correct
word for this label.
In languages where nouns change depending on whether they're used as the subject or
object of a sentence, this description will allow translators to use the correct form.
Don't include HTML markup in a translatable string; split the text into multiple translatable
strings. Otherwise, translators will be able to modify your markup. Never put tags with
behavior such as <a> inside a translatable string, since a translator would be able to make
changes to the tag's contents. This is a better way to render an anchor:
Use CSS rather than markup to confine text to particular parts of the page or to style your
text. For example, if you have the text "Next Page" and you want each word on a separate
line, put it in a <div> with a maximum width rather than putting a <br> tag in between the
two words. Don't split the text into separately translatable units since it will prevent
translators from changing word order if needed.
<fb:intl>Next<br/>Page</fb:intl>
<fb:intl>Next</fb:intl><br/><fb:intl>Page</fb:intl>
If a language needs the word for "Page" to come before the word for "Next", it is
impossible to translate correctly.
Rather, do this:
With appropriate CSS, the browser will word wrap the string appropriately.
There are some HTML tags that have attributes that can take on text values, like the "value"
attribute of an <input> tag or the "alt" text of an image. To make situations like these
translatable, use fb:tag-attribute. You would format markup for a form like this:
<input type="submit">
<fb:tag-attribute name="value">
<fb:intl desc="Button action: Submit a form">Click here</fb:intl>
</fb:tag-attribute>
</input>
Try not to use layouts that depend on the precise onscreen sizes of pieces of text in the
original language. For any piece of text, in some languages it is likely to be shorter and in
some it will be longer (sometimes significantly so in either direction.) If you have sized
your user interface elements such that your text just barely fits, your application will
probably not work well in a language with longer words.
Assume that a translator will have to change the word order of every sentence. In particular,
don't try to assemble sentences from smaller separately-translatable fragments, because
even if you provide excellent descriptions, it's likely you will make it impossible for a
translator to come up with a grammatically correct translation. Instead, expand all the
possible cases out into separate translatable sentences and choose a complete sentence in
your code.
Here the code is printing the beginning of the sentence, which doesn't change in English,
then choosing one of two possible endings. This is impossible to translate correctly to
Chinese, where the phrases for "at home" and "at a restaurant" need to come before the
word for "eating".
Or, say you have a phrase like "You have {number} photos." where you use the word
"photo" when the number is 1, expand this out into separate complete sentences line, "You
have one photo." and "You have {number} photos.", like this:
Different languages use different punctuation symbols; for example, Chinese has two
different comma characters that are used in different contexts. And Japanese uses its own
end-of-sentence character, which is not an English-style period. In general if you allow
translators to translate complete sentences (including periods and commas) this won't be as
big an issue for you. So you should include punctuation within the fb:intl tags:
Including the colon as part of the translatable string means translators can substitute another
punctuation mark if applicable, or can insert whitespace between the text and the colon (as
is done in French, for example.)
Generally speaking, XFBML will work anywhere in the <body> tag of your page.
However, this doesn't account for the title of the window. You can set a window title using
the fb:window-title tag, placing it anywhere in your document where normal XFBML can
be parsed. It will take the rendered contents of the tag as your document's title. You could
now enable a translated window title with the following:
<fb:window-title>
<fb:intl desc="Title of a Web page">Welcome!</fb:intl>
</fb:window-title>
Credits API
The Facebook Credits API enables a user to use credits as a method for purchasing digital and
virtual goods within your app.
The Facebook Credits API enables a user to use credits as a method for purchasing digital
and virtual goods within a Facebook canvas application. Please note: the credits api is not
yet available for use by external websites but only on canvas iframe applications.
A user places an order by clicking a "Pay with Facebook" button. The order gets submitted
to Facebook through JavaScript. Based on the contents of the 'order_info' parameter passed
to Facebook (see below), Facebook gets the item details.
Facebook then displays those details to the user and waits for confirmation from the user. If
the user has sufficient credits or if the user has a stored credit card or other payment
credential on file, the order gets fulfilled in a confirmation dialog, without navigating away
from the application. When the user does not have payment credentials on file, the user
may get redirected to a new page for entering credentials or may stay within the dialog,
depending on the payment type.
When the user confirms their willingness to pay, Facebook calls the application backend to
let the application owner's system settle the order. Once the application responds, Facebook
completes the transaction appropriately and shows the result to the user. If the payment was
done in the dialog, the user can click continue to close the payment dialog and follow a
javascript instruction set by the application. If the payment was completed on the full page,
the user can click continue to go to a destination url set by the application.
The Credits API has two components: a front end credits API and a back end credits API.
The following diagram roughly illustrates a simple order fulfillment process.
To enable your application for Credits, please go to the Developer App and click "Edit
Settings" for the application you wish to enable. Then, click on "Credits" on the left-hand
rail and follow the steps provided.
Once your application has been credits-enabled, you can begin setting up your test
environment by downloading the Facebook Credits Sample application from Github. Links
and more information on our Facebook Credits branding assets can be found here.
When using the new JS SDK be sure to turn on the 'signed_request' parameter for OAuth
2.0. This can be found in the developer application under Advanced -> Migrations ->
OAuth 2.0 for Canvas (beta).
Remember to declare yourself as a test user. Orders from test users are not processed and
you will never be charged for a transaction.
Currently, only IFrame applications on Facebook can use the following Credits API
methods. Facebook Connect sites cannot use the API.
Every credits-enabled application has a callback URL that was defined in your application
settings. Facebook will call this page after a user has clicked on the Facebook Credits
button in your application. A significant amount of logic must be coded into your callback
to handle multiple communications between Facebook and your application.
When Facebook receives a request - such as a pay request - we will call your callback URL
and pass back the method name "payments_get_items" along with any information you
passed in the order_info field. All of the information passed between Facebook and your
callback URL will be JSON-encoded so you will have to decode before parsing.
Your callback should have a conditional that parses out to POST variable called 'method'. If
it sees "payments_get_items", it should then parse out the POST variable called 'order_info'
and get the values you passed to Facebook originally.
Do a lookup in your database for that product_id and pull the item_title, item_description,
price, product_url, and image_url to populate those respective fields.
After this is passed back, Facebook will display the dialog popup with the accompanying
item information along with a "Confirm" or "Cancel" button.
If the buyer clicks "Confirm", Facebook will call your same callback URL and return
"payments_status_update" with a status set to "placed", an order number, and the item
information.
Your callback program should once again parse out the POST variable called 'method' and
branch to logic based on the "payments_status_update" method. In your logic for this
method call, you should also parse out "status" and "order_id".
Check to make sure the "status" is "placed". If so, then set a next_state = "settled" which
you will pass back to Facebook. You MUST also passback the method name and the
order_id.
When this has been completed, Facebook will once again callback to your callback URL
with the method "payments_status_update" and the "status" variable set to "settled". This is
when you will definitively know that the transaction was completed successfully and you
can then perform any operations to give the item to the user.
You can also view the Credits Sample App callback.php at Github.
Payment Prompt
Using the "pay" method, you can open a modal dialog that will contain specific information
about the item. The modal dialog will contain an item's title, description, its price in
Credits, and an image of the item.
Note:You should only call "pay" using an internal key that is meaningful only to you and
points to a database record that contains item information.
Below is a code snippet that shows how to call the Facebook Credits API in JavaScript. To
test this quickly, you should use the Credits Sample App on Github.
<html>
<head>
<title>My Facebook Credits Page</title>
</head>
<body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<p> <a onclick="placeOrder(); return false;">Buy Stuff</a></p>
<script>
FB.init({appId: <your_app_id>, status: true, cookie: true});
function placeOrder() {
FB.ui(obj, callback);
}
function writeback(str) {
document.getElementById('output').innerHTML=str;
}
</script>
</body>
</html>
Attributes:
If you need to open the pay dialog in a new page, please refer to the pay dialog
documentation.
This feature is an API call that allows users to purchase credits without having to purchase
an item with that purchase.
<script>
FB.ui(obj, callback);
}
</script>
</body>
</html>
Attributes:
This feature allows your users to earn credits by completing advertiser offers. Download
TrialPay's Direct Access to Offers integration guide to learn more.
<script>
function earnCredits(){
// Initialization
FB.init({appId: <your_app_id>, status: true, cookie: true});
FB.ui(obj, callback);
}
Note: If you have not yet transitioned to the new JS SDK, please refer to the Direct Access
to Offers guide for alternate integration instructions.
Attributes:
This feature allows your users to earn credits by completing an exclusive daily offer.
Download TrialPay's DealSpot integration guide to learn more.
Parameters:
Please Note:
DealSpot will automatically rotate (and hide when appropriate) deal icons based on
promotion availability
You must allow the DealSpot SWF to communicate with its host page (eg set
trustContent flag to true) . Please refer to the DealSpot integration guide to learn
more.
Get Balance
This whitelisted feature is an API call that allows an application to determine a user's
balance. It is only available to developers who have designated Credits as their in-game
currency. You can apply here.
file_get_contents('https://api.facebook.com/method/users.getStandardinfo'
.
'?
uids=<UID>&fields=credit_balance&access_token='.
'<ACCESS_TOKEN>&format=json'));
returns Array ( [0] => stdClass Object ( [uid] => [credit_balance] => 48
) )
Attributes:
Gamer Status
This whitelisted feature is an API call which will help developers understand and scope
their game economies. It is only available to developers who have designated Credits as
their in-game currency. You can apply here.
Each user is tagged with a gamer_status. The set of users tagged with gamer_status > 0 will
monetize at a much higher rate than the general population and are eligible for up to 20%
discounts on Credits packages and so may affect the economy of your game. The
gamer_status tag does not tell you anything specific about this particular user, except that
they are in a pool of users that monetize at a much higher rate than the general population,
and that are likely, but not certainly, eligible for significant discounts on facebook credits.
You may not use gamer_status for any purpose other than internal and administrative
purposes related to the operation of your game. For example, you may not use this
information for marketing purposes. You may offer special discounts to these users, but
you may not increase prices for these users.
$ret = $facebook->api_client->users_getStandardInfo($user_id,
array('gamer_status'));
This feature allows developers to make their promotions or deals more effective, let users
easily share these with their friends, and let these friends buy promoted items directly from
their news feed without having to visit the game. It is only available to developers who
have designated Credits as their in-game currency. You can apply here.
To use Buy With Friends, you need to first create a deal with certain parameters (duration,
% discount, etc.) and then assign one or more items to that deal. You must use the Deal
Graph API to determine if a deal is available to a user or not.
// Purchase parameters
// Assumes you’ve already created a deal
var dev_purchase_params = {
deal_id: [deal id]
};
Facebook will load the Buy with Friends purchase dialog. Please note that Facebook will
not issue a request to your payments_get_items callback which differs from a normal
purchase flow. Facebook will use the information provided in your Graph API product and
deal objects to construct the BWF purchase dialog.
On Monday, May 2, 2011, we plan to launch and rollout Auto-Frictionless Payments for
items under 100 Facebook Credits, over a period of approximately one week. After a user
purchases an item, Facebook will automatically display a success dialog to the user. As a
result, you will no longer need to call the Frictionless Payments API documented below. As
a best practice, please check that items under 100 Facebook Credits are clearly labeled with
price and nearby buy button to maintain the user experience. Note: that if you’ve already
implemented the frictionless API on your games' items, these items should not be affected;
however, once Auto-Frictionless Payments is ramped to 100 percent of users, we
encourage you to deprecate your use of this API, and just use our standard payment flow
which will automatically default to a frictionless payment for items under 100 credits.
This feature allows developers to debit a player's balance without initiating the Facebook
Credits Payment Dialog. This feature is not a replacement for the pay dialog, and will only
work for users who have a balance greater than or equal to the amount being requested. In
addition, your application is required to display the user's Credits balance. It is only
available to developers who have designated Credits as their in-game currency. You can
apply here.
You must explicitly handle the event in which a user has insufficient credits by popping the
pay dialog to purchase additional credits. Once this has been processed, the call can be
reissued.
Since you are passing an internal key to Facebook, Facebook will ask your application to
return the product price using "payments_get_items". Facebook will automatically return
"payments_status_update" to "settled" rather than "placed" since there is no confirmation
required from the user.
Note: In order to execute this API call, the user must have interacted with your application
in the last 30 minutes. This timeframe is required to tightly couple an item purchase and its
associated debit from the user's remaining balance.
$app_token_url = "https://graph.facebook.com/oauth/access_token?
client_id=".
$app_id."&client_secret=".
$app_secret."&grant_type=client_credentials";
$app_access_token = file_get_contents($app_token_url);
$url = "https://graph.facebook.com/".$app_id."/payments?to=".
$app_id."&from=".
$ret = file_get_contents($url);
Parameters:
Error Codes:
You can interact with orders created by the application using the Facebook Credits Graph
API to view and update orders as needed. An Order ID is an object within the Graph API.
Note: You must use actual orders when calling the Graph API. Orders from test users will
not be processed.
API
Parameters:
Returns:
a JSON object:
{
"id": "",
"from": {
"name": "",
"id": ""
},
"to": {
"name": "",
"id": ""
},
"amount": ,
"status": "",
"application": {
"name": "",
"id": ""
},
"country": "",
"created_time": "",
"updated_time": ""
}
refund_code: Only returned if the order was refunded by Facebook. See Refund
Reason Codes below.
API
Parameters:
Returns:
Get Orders
Returns all orders for the given application. Note: currently we will only return 100,000
orders for a single date/time range. If you need to pull more than 100,000 orders for a
single 24 hour period, then please split the day into multiple dayparts and make multiple
queries.
API
Parameters
Returns:
A JSON object:
{
"data": [
{
"id": "",
"from": {
"name": "",
"id": ""
},
"to": {
"name": "",
"id": ""
},
"amount": ,
"status": "",
"application": {
"name": "",
"id": ""
},
"created_time": "",
"updated_time": ""
},
...
],
"paging": {
"previous": "",
"next": ""
}
}
There are two callbacks Facebook makes on the application back end. The application
needs to verify the fb_sig parameter to make sure that the request is coming from facebook.
payments_get_items: Along with the call, Facebook provides the order_id and order_info,
and expects to get a JSON-encoded array of items associated with the order.
Parameters:
Return value: A JSON-encoded array of {items}. Note: Currently, only one item is
allowed, but it still gets returned as an array. An item has the following fields:
payments_status_update: Facebook calls the application with the order_details and status
of the order. The application responds with the status it wants to move the order to.
Parameters:
Returns:
1. status - The value of status depends upon the order's status before the update.
Order Statuses You can respond with one of three statuses: settled, canceled, or refunded.
Status Notes
This status occurs when the transaction has been "captured" - so moved from
settled
"authorized". The funds will be taken from the buyer's account at this time
This status can only be reached from the placed status. If this status is used, then,
if the user did not have enough credits to complete the purchase in the first place,
the user's balance will be incremented by the item_price amount specified for the
canceled
purchase by initiating a purchase of credits from that user's chosen billing
instrument. However, those credits will NOT be spent in the game -- they will just
remain in the user's balance
This status can be initiated by the you (the developer) or by Facebook. The entire
refunded amount is refunded to the buyer, and there is NO CHARGE/FEE to the developer
for the authorization
Reporting
Daily digest and detailed reports as well as bi-monthly payout reports will be sent to each
company at the email provided during signup from the address Facebook Credits
<noreply@fb.com>. Be sure this email is whitelisted from any spam filters to avoid not
receiving your reports. Each file contains no more than 100,000 lines. In case more than
100,000 lines of activities are transacted, multiple files will be provided.
Digest Report
The digest report contains a summary of each type of transaction which occurred in the live
applications associated with the parent company.
The subject of the email is in the following format with capitalized variables being unique:
Example:
My Sweet Company: Facebook Credits Daily Digest Report for 2011-03-02
The report is a tab separated values text file (.tsv) contained in an attachment. The name of
the attachment is in the following format with capitalized variables being unique:
Digest_FBFINANCIALID_DATEOFREPORT.tsv
Example:
The .tsv attachment is delimited tab by '\t' and newline delimited by '\n'. The first line of the
report contains the fields for which each value in a line of the report represent. The field
titles and an example row are included below.
Detail Report
The detail report contains all transactions which occurred in the live applications associated
with the parent company.
The subject of the email is in the following format with capitalized variables being unique:
Example:
My Sweet Company: Facebook Credits Daily Detail Report for 2011-03-02
The report is a tab separated values text file (.tsv) contained in a zipped attachment (.zip).
The name of the attachment is in the following format with capitalized variables being
unique:
Detail_FBFINANCIALID_DATEOFREPORT_CURRENTNUMEMAILOFTOTAL_TOTALNUMEMAILS.t
sv.zip
Example:
Detail_12345678910_2011-03-02_001_001.tsv.zip
After the attachment is unzipped, the .tsv file is delimited tab by '\t' and newline delimited
by '\n'. The first line of the report contains the fields for which each value in a line of the
report represent. The field titles and an example row are included below.
Please note: It is possible to have multiple lines in your report for an order with the same
transaction ID and/or order ID. This is due to several possible reasons.
Another possible explanation for having multiple lines for an order is when the order is
refunded. The following example shows what an order that was refunded one minute after
the initial transaction should look like.
Payout Summary
The payout summary will be sent on the 5th and 20th of every month. It will contain a
zipped attachment will all order details during that payout period in the same format as the
daily report. In addition to the detailed report you will also receive a summary of the
transactions for each of your apps during that payout period.
The summary email for that given payout period is formatted as follows:
Dispute Resolution
The dispute resolution system gives the user and the developer an easy way to interact
regarding a previous payment made using Facebook Credits, and resolve disputes among
themselves. We trust the application to resolve disputes appropriately by either refunding
the user's payment amount or by making sure that the user is satisfied, and then resolving
the dispute with appropriate explanation.
User Interaction
There is a link at the bottom of the application canvas page for apps that are using our
payments: "Report". When the user clicks the link they are prompted with choices, one of
which is "Dispute ..." which does the following:
1. Brings up order-selection dialog (shows purchases made in that app in the last 30
days) where the user chooses the order they want to dispute. This brings up a form
to input a reason (required).
2. On completion, sends a mail to the developer, Facebook, and the user setting
expectation around the dispute being between user and application.
Note: While resolving a dispute with a user, an email is sent to the developer and the user
is CCed on that email. The developer can then interact with the user through this channel to
make sure they are satisfied.
Resolve a Dispute
The developer can interact with the user and resolve the dispute in two ways:
1. By calling the /[order id] API to refund the order, you must provide the appropriate
order_id, status=refunded, in addition to specifying the reason for your refund in the
'comment' param.
2. If the developer is satisfied that the user understands the charge after the interaction
with the user, they can resolve the dispute by calling the /[order id] API with the
order-id, status=settled, and specify the reason as the comment in the params.
Chargebacks
An application is liable for chargebacks that occur within 90 days of the credits spent on the
application. In the event of a chargeback, all monies are refunded including processing fee.
If you make a GET request to the /[order id] API and if the order in question has been
refunded by Facebook, then there will be an additional field returned called "refund_code"
with one of the following values:
Compromised Account
Stolen Financial Instrument
Not Fraud
User Confusion
Dev System Issue
FB System Issue
https://graph.facebook.com/ORDER_ID?access_token=ACCESS_TOKEN
Example Output:
{
"id": "9003976483685",
"from": {
"name": "Daniel Schultz",
"id": "221159"
},
"to": {
"name": "Daniel Schultz",
"id": "221159"
},
"amount": 1,
"status": "refunded",
"refund_reason_code": "FB System Issue",
"application": {
"name": "credits_new_reg",
"id": "128163550571392"
},
Error Codes
The following section covers the respective errors with the Frontend API and Backend API.
The following errors can be returned in addition to the regular API exceptions:
Error
Error Name Note
Code
Unknown
1150 API_EC_PAYMENTS_UNKNOWN
error
Application
is not
enabled for
1151 API_EC_PAYMENTS_APP_INVALID
using
Facebook
Credits.
A database
1152 API_EC_PAYMENTS_DATABASE error
occurred.
Permission
denied to
1153 API_EC_PAYMENTS_PERMISSION_DENIED
check order
details.
1154 API_EC_PAYMENTS_APP_NO_RESPONSE Payments
Ads API
The Facebook Ads API lets you create and manage your own ads on Facebook programmatically,
without using the Facebook Advertising Manager tool.
You can use the Ads API if you match one of these profiles:
If you don't want to build your own ads management tool, you can work with a vendor who
has.
Getting Started
To get started with the Ads API, complete the following steps.
To get started, you need to configure some basic settings of a Facebook application.
1. Log in to Facebook using the account you'll use to create the application. This must
be a real Facebook account, not an advertising-only "gray account."
2. Go to the Facebook Developer application and create a new application.
3. Note the Application ID Facebook provides; you will need it to agree to the Ads
API terms. You'll use the API Key to call the Ads API and to grant the application
permission for your user account (see below).
Before you can start using the Ads API, you need to get on the Ads API whitelist. You
have to apply for the whitelist only once per application. After you have been accepted in
the Ads API Beta program and your application is whitelisted please do the following:
1. Log in to Facebook with the same account that you used to create the application
above.
2. Go to this URL: http://www.facebook.com/ads/manage/api_terms.php?
app_id=YOUR_APPLICATION_ID, replacing "YOUR_APPLICATION_ID" with
the application ID you received when you configured your application (see above).
3. Select the check box to agree to the terms provided.
Provide authentication
For an app to do ad management, a user (including an app developer) must give the app
permission. This permission is called the ads_management extended permission.
To enable your app to manage ads for a user, you use the scope parameter to prompt the
user for the extended permission of ads_management. Also prompt the user for the
extended permission of offline_access if your app makes API calls while the user isn’t
logged into your app. For information about token expiration, see the authentication guide.
The following example uses the scope parameter to prompt the user for ads_management
and offline_access. Access is granted when the user clicks the Allow button:
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=ads_management,offline_
access
If the user clicks the Allow button when you prompt for the extended permissions, the user
is redirected to a URL that contains the value of the redirect_uri parameter and an
authorization code:
http://YOUR_URL?code=AUTHORIZATION_CODE
Build a URL that includes the endpoint for getting a token, your app ID, your site URL,
your app secret, and the authorization code you just received. The URL will be similar to
the following:
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET
&code=AUTHORIZATION_CODE
The response should contain the access token for the user. For additional information, see
the authentication guide.
The token should be stored in your database for subsequent API calls.
When a user starts your web application, check for the validity of the token. If necessary,
prompt the user for permissions. If this is not possible for your application (e.g., API calls
are not based on a user-interface flow, or there’s as script failure), a different way to prompt
the user may be necessary. For example, your app could email instructions to the user.
Sample code
The Ads API sample code is built on top of Facebook's PHP-SDK. The code is available
here. You can view the running sample here.
You must sign every call you make to the Ads API.
Once Facebook has whitelisted your application, you can test the API calls using the API
test console for each method. Be sure to select the correct application from the drop down.
The API is live, so Facebook doesn't provide a sandbox where you can test your code.
Keep these best practices in mind as you work with the Ads API.
You shouldn't change the targeting, title, or body for an ad for purposes of using the ad in
slightly modified form elsewhere; you should create a new ad.
Facebook recommends storing user IDs, session keys, and the Ads Account ID in a manner
that makes it easy to programmatically access them and keep them together. This is
important because any calls made with an account ID belonging to one user and the session
key for another user will fail with a permissions error.
It's a good idea to run frequent reports on your campaigns, as suggested bids change
dynamically in response to bidding by competitors using similar targeting. Bid suggestions
get updated within a few hours, depending upon the bidding of competitors.
The Ads API contains methods and structures that enable you to create and manage ad
campaigns.
Account Methods
ads.getAccounts
ads.addAccountUsers
ads.removeAccountUsers
Campaign Methods
ads.createCampaigns
ads.getCampaigns
ads.getCampaignStats
ads.updateCampaigns
Ad Group Methods
ads.createCreatives
ads.createAdGroups
ads.estimateTargetingStats
ads.getAdGroupCreatives
ads.getAdGroupStats
ads.getAdGroups
ads.getAdGroupTargeting
ads.getConnectionObjectIds
ads.updateAdGroups
Keyword Methods
ads.getAutoCompleteData
ads.getKeywordAutocomplete
ads.getKeywordSuggestions
ads.getValidKeywords
ads.getAdreportSchedules
ads.createAdreportSchedules
ads.updateAdreportSchedules
ads.getAdreportJobs
Structures
ads.adgroup specs
ads.campaign specs
ads.creative specs
ads.targeting specs
ads.report specs
ads.schedule specs
Chat API
You can integrate Facebook Chat into your Web-based, desktop, or mobile instant
messaging products. Your instant messaging client connects to Facebook Chat via the
Jabber/XMPP service. This document describes the features and limitations of Facebook
Chat's XMPP protocol for the developer who intends to implement a Facebook Chat client.
Before reading this document, you should be familiar with the terms and concepts involved
in XMPP chat clients and servers. If you anticipate that your Jabber client will host as many
as 100,000 sessions, go to the Developer Help Contact Form and select Jabber to let us
know.
Limitations
Facebook Chat should be compatible with every XMPP client, but is not a full XMPP
server. It should be thought of as a proxy into the world of Facebook Chat on
www.facebook.com. As a result, it has several behaviors that differ slightly from what you
would expect from a traditional XMPP service:
You can authenticate your chat client users with one of two authentication mechanisms: X-
FACEBOOK-PLATFORM (Facebook Platform) and DIGEST-MD5 (username/password).
Facebook recommends you use the X-FACEBOOK-PLATFORM mechanism to connect to
In order to connect using this mechanism, the user must first log in to your application and
grant the xmpp_login extended permission.
Your application may now log in to Facebook Chat via Jabber using the X-FACEBOOK-
PLATFORM mechanism. The user's Jabber ID will be assigned during the resource binding
step of XMPP. Please keep in mind that while all of the messages defined by the X-
FACEBOOK-PLATFORM mechanism are UTF-8 strings, XMPP specifies that they
should be Base64-encoded before being sent over the wire.
The mechanism starts with a server challenge, in the form of a common HTTP query string:
an ampersand-separated sequence of equals-sign-delimited key/value pairs. The keys and
values are UTF-8-encoded and URL-encoded. The query string contains two items: method
and nonce.
The client's reply should be a similarly-encoded query string prepared as if it were going to
call a method against the Facebook API. The call should contain the following parameters:
string method: Should be the same as the method specified by the server.
string api_key: The application key associated with the calling application.
string session_key: The session key of the logged in user.
float call_id: The request's sequence number.
string sig: An MD5 hash of the current request and your secret key.
string v: This must be set to 1.0 to use this version of the API.
string format: Optional - Ignored.
string cnonce: Optional - Client-selected nonce. Ignored.
string nonce: Should be the same as the nonce specified by the server.
Proxies the XMPP connection (the connection must be directly from the user's
computer to Facebook).
Reports messages or any other information about user activity to a third party
(including the client developer).
Integrates with Facebook, or has a Facebook Application ID.
If your application does any of the above, you must use Facebook Platform authentication
instead.
The user's Jabber ID is simply his or her Facebook user name with @chat.facebook.com
appended. A user must have a Facebook username to use DIGEST-MD5. After the user
gets his or her username, he or she must log out of and into Facebook once for us to store
the special hash of the password.
Clients should retrieve their user's vCard from the server according to XEP-0054 in order to
be able to display a more natural name to the user. For example:
Best Practices
In order to provide the best user experience, we recommend your chat integration do the
following:
Your Facebook Chat integration should only be used for sessions that are expected
to be long-lived. Clients should not rapidly churn on and off.
vCards retrieved through Facebook Chat will contain profile pictures if available.
Clients should cache these pictures using the content hash, not the user ID, as the
key. vCards should only be fetched if the client does not already have that user's
picture cached.
Clients should not automatically reconnect if they receive a stream-error of type
conflict.
Clients should be able to handle a single contact with multiple group elements.
Incoming messages from the JIDs chat.facebook.com or facebook.com should be
displayed as administrative messages.
This sample code (written in Python) demonstrates integrating Facebook Chat using the X-
FACEBOOK-PLATFORM authentication mechanism. You'll need pyxmpp and
pyfacebook before you can run this sample code. You can get pyxmpp from several
#!/usr/bin/env python
import sys
import os
def get_facebook_client():
import facebook
# Replace these with your app's credentials
api_key = 'YOUR_API_KEY'
secret_key = 'YOUR_API_SECRET'
try:
# Try to read cached credentials from the session-key file.
# If authorization fails, you should delete this file and start
of.
handle = open('session-key', 'r')
client.uid, client.session_key, client.secret = [ line.strip()
for line in handle ]
handle.close()
except IOError:
client.auth.createToken()
client.login()
print 'Log in to the app in your browser, then press enter.'
raw_input()
client.auth.getSession()
handle = open('session-key', 'w')
print >> handle, client.uid
print >> handle, client.session_key
print >> handle, client.secret
handle.close()
if not int(client.users.hasAppPermission('xmpp_login')):
import webbrowser
webbrowser.open(client.get_url('authorize',
ext_perm = 'xmpp_login',
api_key = client.api_key,
v = '1.0'))
return client
class XFacebookPlatformClientAuthenticator(ClientAuthenticator):
def __init__(self, password_manager, fb_client=None):
ClientAuthenticator.__init__(self, password_manager)
if fb_client is None:
global global_fb_client
fb_client = global_fb_client
self._fb_client = fb_client
def finish(self,data):
return Success(None)
class FacebookChatClient(Client):
def __init__(self, to_uid, message, **kwargs):
Client.__init__(self, **kwargs)
self.to_uid = to_uid
self.message = message
self.sent = False
def session_started(self):
self.get_stream().set_message_handler(`chat`, self.got_message)
self.get_stream().send(Presence())
def idle(self):
print 'Idle...'
Client.idle(self)
if self.session_established and not self.sent:
self.sent = True
target = JID('-' + self.to_uid, self.jid.domain)
if __name__ == '__main__':
# Uncomment these lines to get more verbose logging.
#import logging
#logger = logging.getLogger()
#logger.addHandler(logging.StreamHandler())
#logger.setLevel(logging.DEBUG)
try:
my_uid = str(global_fb_client.uid)
to_uid = sys.argv[1]
message = unicode(sys.argv[2])
my_jid = '-' + my_uid + '@chat.facebook.com/TestClient'
except IndexError:
sys.exit('usage: %s {to_uid} {message}' % sys.argv[0])
print 'Connecting...'
xmpp_client.connect()
print 'Processing...'
try:
xmpp_client.loop(1)
finally:
xmpp_client.disconnect()
Este documento consta de nueve secciones, y puedes ir directamente a cada una de ellas
seleccionando los enlaces siguientes:
1. Introducción
2. Información que recibimos
3. Compartir información en Facebook.
4. Información que compartes con terceros
5. Cómo utilizamos tu información
6. Cómo compartimos la información
7. Cómo puedes modificar o eliminar información
8. Cómo protegemos la información
9. Otras condiciones
1. Introducción
Preguntas. Si tienes alguna pregunta o duda sobre nuestra política de privacidad, ponte en
contacto con nuestro equipo de privacidad a través de esta página de ayuda. También
puedes contactar con nosotros por correo ordinario en 1601 S. California Avenue, Palo
Alto, CA 94304.
Safe Harbor. Facebook también cumple el marco Safe Harbor de la Unión Europea
desarrollado por el Departamento de Comercio de Estados Unidos en cuanto a recopilación,
uso y retención de datos pertenecientes a la Unión Europea. Como parte de nuestra
participación en Safe Harbor, nos comprometemos a resolver todos los posibles conflictos
que puedan surgir en relación con nuestras políticas y prácticas a través de TRUSTe.
Asimismo, responderemos a las solicitudes de acceso dentro de un plazo de tiempo
razonable. Para ver nuestra certificación, entra en el sitio web del programa Safe Harbor
del Departamento de Comercio de los Estados Unidos.
Información sobre ti. Cuando te registras en Facebook, nos facilitas tu nombre, correo
electrónico, sexo y fecha de nacimiento. Durante el proceso de registro, te ofrecemos la
posibilidad de conectarte a tus amigos, centros educativos y empleados. También podrás
añadir una foto. En algunos casos podríamos pedirte información adicional por motivos de
seguridad o para ofrecerte servicios específicos. Una vez registrado puedes proporcionar
otra información sobre ti relacionada, por ejemplo, con tu ciudad de residencia, ciudad de
origen, familia, relaciones, redes, actividades, intereses y lugares. También puedes indicar
tu ideología política o tus creencias religiosas.
Contenido. Una de las finalidades principales del uso de Facebook es compartir contenido
con los demás, por ejemplo, actualizar tu estado, cargar o hacer una foto, cargar o grabar un
vídeo, compartir un enlace, crear un evento o un grupo, hacer un comentario, escribir algo
en el muro de alguien, escribir una nota o enviar un mensaje. Si no deseas que guardemos
los metadatos asociados al contenido que compartes en Facebook (como las fotografías)
elimina los metadatos antes de cargar el contenido.
Información sobre transacciones. Podemos guardar los datos de las transacciones o pagos
que realices a través de Facebook. Si no deseas que almacenemos el número de cuenta de
origen de tu pago, puedes eliminarlo a través de la página de pagos.
Información procedente de otros sitios web. Podemos establecer programas con socios
publicitarios y otros sitios web en los que éstos comparten información con nosotros:
Podemos solicitar a los anunciantes que nos indiquen cómo nuestros usuarios han
respondido a los anuncios que les mostramos (y, con fines comparativos, cómo han
actuado en su página otros usuarios que no habían visto los anuncios). Esta compartición
de datos, denominada comúnmente "seguimiento de conversión" nos ayuda a medir la
efectividad de nuestra publicidad y a mejorar la calidad de los anuncios que ves.
Podemos recibir información sobre si has visto o no, o si has interactuado con
determinados anuncios de otros sitios, para medir la efectividad de dichos anuncios.
Si en cualquiera de estos casos recibimos datos que todavía no tenemos, les otorgaremos el
carácter de "anónimos" en un plazo de 180 días, lo cual significa que no asociaremos la
información con ningún usuario en particular. Si establecemos dichos programas, sólo
haremos uso de la información según se explica en la sección "Cómo utilizamos tu
información" expuesta a continuación.
Nombre y foto del perfil. Facebook ha sido diseñado para que te resulte sencillo encontrar
y conectarte a otros. Por este motivo, tu nombre y la foto de tu perfil carecen de
configuración de privacidad. Si no quieres compartir la foto de tu perfil, debes eliminarla (o
no añadir ninguna). También puedes controlar quién puede encontrarte al buscar en
Facebook o en motores de búsqueda públicos utilizando la configuración de la privacidad
de las aplicaciones y los sitios web.
Parte del contenido que compartes y de las acciones que llevas a cabo se mostrarán en las
páginas de inicio de tus amigos y en otras páginas que visiten.
Si otro usuario te etiqueta en una foto, vídeo o lugar, puedes eliminar la etiqueta.
También puedes limitar quién puede ver que has sido etiquetado en tu perfil desde la
configuración de la privacidad.
Incluso tras haber eliminado la información de tu perfil o tras haber borrado tu cuenta, es
posible que alguna copia de dicha información permanezca visible en algún otro lugar si
ha sido compartida con otros, ha sido distribuida de algún otro modo según tu
configuración de la privacidad o ha sido copiada o almacenada por otros usuarios.
Debes entender que la información puede ser compartida a su vez o copiada por otros
usuarios.
Algunos tipos de comunicaciones que envías a otros usuarios no pueden eliminarse, como
por ejemplo los mensajes.
Cuando publicas información en el perfil de otro usuario o realizas un comentario en la
publicación de otro usuario, dicha información queda sujeta a la configuración de la
privacidad del otro usuario.
Si utilizas una fuente externa para publicar información en Facebook (como una
aplicación móvil o un sitio web de Connect) debes comprobar la configuración de
privacidad de dicha publicación, puesto que la establece la fuente externa.
Conexión a una aplicación o sitio web. Cuando te conectas a una aplicación o sitio web,
éstos tendrán acceso a Información general sobre ti. El término Información general incluye
tu nombre y los nombres de tus amigos, fotografías de perfil, sexo, identificador de usuario,
conexiones y cualquier contenido compartido usando la configuración de privacidad
“Todos”. Para ayudar a estos sitios web y aplicaciones a poner en práctica medidas de
seguridad y controlar la distribución de contenido apropiado a usuarios de diferentes
edades, podemos poner a su disposición otra información, como datos técnicos, la
localización de tu equipo informático o dispositivo de acceso, así como tu edad. Asimismo,
las aplicaciones o sitios web que aceptan créditos pueden acceder a tu saldo de créditos. Si
la aplicación o el sitio web desea acceder a otros datos, tendrá que pedirte permiso.
Aconsejamos que leas siempre las políticas de los sitios web y las aplicaciones de terceros
para cerciorarte de que estás de acuerdo con el modo en el que usan la información que
compartes con ellos. Facebook no puede garantizar que estos sitios web o aplicaciones
cumplirán nuestras normas. Si encuentras alguna aplicación o sitio web que infringe
nuestras normas, infórmanos de este incumplimiento en esta página de ayuday tomaremos
las medidas oportunas.
Cuando tus amigos utilizan la plataforma. Si tu amigo se conecta a una aplicación o sitio
web, éstos podrán acceder a tu nombre, fotografía del perfil, sexo, ID de usuario y aquella
información que hayas compartido con "todos". También podrán acceder a tus conexiones,
pero no podrán acceder a tu lista de amigos. Si ya te has conectado a ese sitio web o
aplicación (o dispones de otra cuenta en estos lugares), es posible que éstos también puedan
conectarse con tu amigo a través de ese sitio web o aplicación. Si la aplicación o el sitio
web desean acceder a cualquier otro contenido o información tuya (incluida tu lista de
Exportación de información. Puedes (al igual que todos aquellos a cuya disposición has
puesto tu información) utilizar herramientas como fuentes RSS, aplicaciones de libretas de
direcciones del teléfono móvil o funciones de copiar y pegar, para obtener y exportar (y en
algunos casos, importar) información de Facebook, incluida tu propia información y todos
los datos sobre tu persona. Por ejemplo, si compartes tu número de teléfono con tus amigos,
éstos pueden utilizar aplicaciones de terceros para sincronizar dicha información con la
libreta de direcciones de sus teléfonos móviles.
Enlaces. Al hacer clic en algunos enlaces de Facebook, es posible que te lleven fuera de
nuestro sitio web. No nos hacemos responsables de las políticas de privacidad de otros
sitios web, y te animamos a que leas sus normas de privacidad.
Utilizamos la información que recopilamos para tratar de ofrecerte una experiencia segura,
eficaz y personalizada. A continuación, incluimos algunos datos sobre cómo lo hacemos:
Para ofrecer anuncios sociales. En ocasiones, emparejamos los anuncios que ofrecemos
con información pertinente que poseemos sobre ti y sobre tus amigos para que los anuncios
resulten más interesantes y se adapten mejor a ti y a tus amigos. Por ejemplo, si te conectas
a la página de tu grupo de música favorito, podemos mostrar tu nombre y la foto de tu perfil
al lado de un anuncio de dicha página que verán tus amigos. Sólo compartimos la
información personal visible en el anuncio social con el amigo que puede ver el anuncio.
Puedes optar por que tu información no sea utilizada en anuncios sociales en esta página de
ayuda.
Para ayudar a tus amigos a encontrarte. Permitimos a otros usuarios utilizar información
de contacto que tengan sobre ti (como tu dirección de correo electrónico) para encontrarte,
incluso a través de herramientas de importación y búsqueda de contactos. Puedes impedir
que otros usuarios utilicen tu dirección de correo electrónico para encontrarte en la sección
de búsquedas de tu configuración de la privacidad.
Cuando realizas un pago. Cuando realices transacciones con otras personas o efectúes
pagos en Facebook, sólo compartiremos la información de la transacción con los terceros
que sean necesarios para completar la transacción. Requeriremos que los terceros acuerden
respetar la privacidad de la información.
Cuando invitas a un amigo a que se una a Facebook. Cuando nos pides que invitemos a
un amigo a que se una a Facebook, le enviaremos un mensaje de tu parte, usando tu
nombre. La invitación también puede contener información sobre otros usuarios que tu
amigo pueda conocer. También le enviamos hasta dos recordatorios en tu nombre. Puedes
ver quién ha aceptado tus invitaciones, enviar recordatorios y eliminar las direcciones de
correo electrónico de tus amigos en la página del historial de invitaciones. Si tu amigo no
quiere que conservemos su información, la eliminaremos a petición suya en esta página de
ayuda.
Para prestarte servicios. Podemos ofrecer información a proveedores de servicios que nos
ayudan a facilitarte los servicios que ofrecemos. Por ejemplo, podemos utilizar a terceros
para alojar nuestro sitio web, enviar actualizaciones por correo electrónico acerca de
Facebook, eliminar información repetitiva de nuestras listas de usuarios, procesar pagos u
ofrecer enlaces o resultados de búsqueda (lo que incluye enlaces promocionados). Estos
proveedores de servicios pueden tener acceso a tu información personal para utilizarla
durante un período de tiempo limitado, pero cuando esto ocurre, implantamos sistemas de
protección técnicos y contractuales razonables para restringir su uso de dicha información a
la ayuda que nos prestan para ofrecer el servicio.
Para publicitar nuestros servicios. Podemos pedir a anunciantes ajenos a Facebook que
muestren anuncios para promocionar nuestros servicios. Podemos pedirles que entreguen
dichos anuncios basándose en la presencia de una cookie, pero al hacerlo, no se compartirá
ninguna otra información con el anunciante.
Para ofrecer servicios conjuntos. Podemos prestar servicios de forma conjunta con otras
empresas, como se el caso del servicio de clasificados del Marketplace de Facebook. Si
utilizas estos servicios, podemos compartir tu información para facilitar dicho servicio. Sin
embargo, identificaremos al socio y te presentaremos la política de privacidad del
proveedor de servicios conjuntos antes de que utilices dicho servicio.
Eliminar los contactos cargados. Si utilizas nuestra herramienta para importar contactos
con el fin de cargar direcciones, después puedes eliminar la lista en esta página de ayuda.
Puedes eliminar las direcciones de correo electrónico de amigos que hayas invitado a unirse
a Facebook en tu página del historial de invitaciones.
Hacemos todo lo posible para mantener a salvo tu información, pero necesitamos tu ayuda.
Para obtener información más pormenorizada sobre cómo mantener la seguridad en
Facebook, visita la página Security Page de Facebook.