This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Configuring Facebook Operations

To use the Facebook connector, add the <facebook.init> element in your configuration before carrying out any other Faceboook operation. Most Graph API requests require the use of access tokens that the client application can generate by implementing Facebook Login .

The basic procedure to get a user token is for the client to request access and permission via the Facebook Login dialog. After the user is authenticated, the user is redirected to the user consent dialog. On completion of consent, the access token is returned to the client. For more information, refer to access tokens and how to generate them using Facebook Login.

init
<facebook.init>
	<apiUrl>{$ctx:apiUrl}</apiUrl>
	<apiVersion>{$ctx:apiVersion}</apiVersion>
	<accessToken>{$ctx:accessToken}</accessToken>
</facebook.init>
Properties
  • apiUrl: The URL of the Facebook API (https://graph.facebook.com)

  • apiVersion: The version of the Facebook API

  • accessToken: The access token that allows making requests to the API on behalf of a user.

Obtaining an access token

To get your access token, you need to add <facebook.getAppAccessToken> to your configuration.

getAppAccessToken
<facebook.getAppAccessToken>
	<clientId>{$ctx:clientId}</clientId>
	<clientSecret>{$ctx:clientSecret}</clientSecret>
</facebook.getAppAccessToken>                                
Properties
  • clientId: The API key that you receive when you register your application with Facebook.
  • clientSecret: The client secret key that you receive when you register your application with Facebook.
Sample request

Following is a sample REST request for the getAppAccessToken method:

Sample request for getAppAccessToken
{
	"apiUrl":"https://graph.facebook.com",
	"clientId":"269855929842963",
	"clientSecret":"6a0920b2cdf3787c993b67b9a400ad0b"
}

Obtaining a page token

To obtain a page token, you need to add <facebook.getPageAccessToken> to your configuration.

getPageAccessToken
<facebook.getPageAccessToken>
	<pageId>{$ctx:pageId}</pageId>
</facebook.getPageAccessToken>                                
Properties
  • pageId: The ID of your Facebook page.

Sample request

Following is a sample REST request for the getPageAccessToken method:

Sample request for getPageAccessToken
{
"apiUrl":"https://graph.facebook.com",
"apiVersion":"v2.5",
"accessToken":"CAACEdEose0cBAHr8S2hVPNpCy1DbIuGHlmwbWubyR6YSr0wxgD0ncZBYfGrRvuZC88KqChF44ZAhMRZCPUeYM6xQaHuf1pCzfAwVMrPT4GUZAIOwbc2aBRb5BD6YlA8YKBgKInK08368Xh78arj3ORrUNZCyCc",
"pageId":"102898890060274"
}

Multipart processing

With the current features of the ESB, the multipart/form-data received cannot be processed inside the ESB. Therefore, to perform operations associated with multipart data, you must build the message from the client end and send it to a pass through proxy. Additional query parameters such as albumId, photoId, pageId can be configured as URL parameters in the relevant connector operation. These query parameters should be retrieved from the URL and handled in the proxy.

For example, if you need to retrieve the album ID from the URL, it should be called as follows:

<albumId>{$url:album_id}</albumId>

Sample proxy to handle multipart operations

postPhotoToAlbum
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="facebook_postPhotoToAlbum"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <facebook.postPhotoToAlbum>
            <albumId>{$url:album_id}</albumId>
			<apiUrl>https://graph.facebook.com</apiUrl>
			<apiVersion>{$url:apiVersion}</apiVersion>
			<accessToken>{$url:accessToken}</accessToken>
         </facebook.postPhotoToAlbum>
         <respond/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy>

Since the endpoint is constructed inside the proxy, it is not necessary to call the init method for multipart operations.

Sample request
curl -X POST \-d "source=%7Bimage-data%7D" \ http://localhost:8280/services/facebook_postPhotoToAlbum/?album_id=1403293536601941

Additional information

Ensure that the following Axis2 configurations are added and enabled in the <ESB_HOME>/repository/conf/axis2/axis2.xml file.

Required message formatters
messageFormatters
<messageFormatter contentType="multipart/form-data" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
Required message builders
messageBuilders
<messageBuilder contentType="multipart/form-data" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

Now that you have connected to Facebook, use the information in the following topics to perform various operations with the connector.