Using profile setFBML

From Facebook Developer Wiki

Jump to: navigation, search

Contents

Description

Sets the FBML for a user's profile or Facebook Page, including:

There are several steps to add content to a User's profile with profile.setFBML:

  1. interact with the user to gather compelling content
  2. call profile.setFBML
  3. induce the user to click on an Add to Profile button
  4. (optional) induce the user click on an Offline Access button or otherwise grant this permission

Interacting with the user to gather compelling content is highly dependent on your application. You may achieve this in one session, or it might require several interactions with the user.

The call to profile.setFBML is:

Parameters

RequiredNameTypeDescription
required api_key string The application key associated with the calling application. If you specify the API key in your client, you don't need to pass it with every call.
call_id float The request's sequence number. Each successive call for any session must use a sequence number greater than the last. We suggest using the current time in milliseconds, such as PHP's microtime(true) function. If you specify the call ID in your client, you don't need to pass it with every call.
sig string An MD5 hash of the current request and your secret key, as described in the How Facebook Authenticates Your Application. Facebook computes the signature for you automatically.
v string This must be set to 1.0 to use this version of the API. If you specify the version in your client, you don't need to pass it with every call.
optional session_key string The session key of the user whose FBML you are setting.
Note: A session key is always required for desktop applications. It is required for Web applications only when the uid is not specified.
format string The desired response format, which can be either XML or JSON. (Default value is XML.)
callback string Name of a function to call. This is primarily to enable cross-domain JavaScript requests using the <script> tag, sometimes known as "JSONP". This works with both XML and JSON.
markup string Deprecated parameter for a user's profile FBML.
uid int The user ID for the user whose profile you are updating, or the page ID in case of a Page. If this parameter is not specified, then it defaults to the session user.
Note: This parameter applies only to Web applications and is required by them only if the session_key is not specified. Facebook returns an error if this parameter is passed by a desktop application.
profile string The FBML intended for the application profile box that appears on the Boxes tab on the user's profile. This should optimally contain a Narrow and Wide block in the FBML
mobile_profile string The FBML intended for mobile devices.
profile_main string The FBML intended for the narrow profile box on the Wall and Info tabs of the user's profile. Note: This attribute applies only to the new profile design that launched July 2008.

Example Requests

$profile = "<fb:narrow>Narrow Content for Boxes tab</fb:narrow><fb:wide>Wide content for Boxes tab</fb:wide>"; $mobile_profile = "Content for Mobile devices"; //this is the same size box as 'Narrow Content' above, so often is the same FBML $profile_main = "Content for main profile page, under user's photo"; $facebook->api_client->profile_setFBML(NULL, 128009, $profile, NULL, $mobile_profile, $profile_main);

Note: You must pass NULL between 'profile' and 'mobile_profile' to account for the deprecated 'profile_action' parameter.

Example Return XML

<?xml version="1.0" encoding="UTF-8"?> <profile_setFBML_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 1 [[This is wall app.]] </profile_setFBML_response>

Error Codes

CodeDescription
1 An unknown error occurred. Please resubmit the request.
2 The service is not available at this time.
3 Unknown method. The method must be one of those exposed by the API.
4 The application has reached the maximum number of requests allowed. More requests are allowed once the time window has completed.
5 The request came from a remote address not allowed by this application.
100 One of the parameters specified was missing or invalid.
101 The API key submitted is not associated with any known application.
102 The session key was improperly submitted or has reached its timeout. Direct the user to log in again to obtain another key.
103 The submitted call_id was not greater than the previous call_id for this session.
104 Incorrect signature.
240 The uid cannot be specified from a desktop application.
330 The markup was invalid.

Notes

  • The FBML is cached on Facebook's server for that particular user (or page) and that particular application. To change it, profile.setFBML must be called through a canvas page for that same user, using the ID of the user uid or Facebook Page fb_page_id on whose behalf you're making this call.
  • You cannot autoplay an swf or run FBJS automatically within these boxes.
  • If you have acquired "offline access" you may also use some other script (such as a cron job) that makes use of the Facebook API without the user being logged in, using the session key for that user or Facebook Page
  • It is also possible in some applications to use Fb:ref within your FBML markup, along with Fb:setRefHandle, to dynamically update user profile's without calling profile.setFBML later. This allows your app to dynamically update profiles without further user interaction, with some additional effort on your part to administrate the Ref Handles.
  • However, if your application is a desktop application, you must pass a valid session key for security reasons. Do not pass a uid or fb_page_id parameter.
  • You can preview your Mobile FBML at [[1]]
  • This function does not require a session_key, unless it is being called by a desktop application.
  • I've had problems with words using umlauts. For example, "müzik". Perhaps encoding them will work - have yet to try that.

See Also

reference