Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I specify the API version in a Facebook batch API request?

A Facebook batch API request allows the caller to specify multiple API endpoints in a single HTTP POST.

The post is made to a base URL: https://graph.facebook.com.

The body of the post contains a JSON hash with relative URLs to call in the "relative_url" field, e.g. "me/feed".

How do I specify an API version in this call?

For example, to hit the 2.2 version of the API, do I post to https://graph.facebook.com/v2.2/ or do I specify "v2.2/me/feed" in the relative_url?

As of Feb 26, 2015 the Facebook API documentation is not clear on this point: https://developers.facebook.com/docs/graph-api/making-multiple-requests

like image 505
Rich Sutton Avatar asked Feb 26 '15 22:02

Rich Sutton


People also ask

How do I change my Facebook API version?

In the App Dashboard Settings > Advanced, scroll to the Upgrade API Version section.

How do I update API version?

Selecting the version via the Developer HubGo to your Developer Hub and choose the relevant app. Then go to the Api Version menu, click on the Change version box and select your new version. Once you have selected the appropriate version for your app all subsequent API requests will use this version.

What is an API version?

API versioning is the practice of transparently managing changes to your API. Versioning is effective communication around changes to your API, so consumers know what to expect from it. You are delivering data to the public in some fashion and you need to communicate when you change the way that data is delivered.

How do I find the API version on a graph?

The API version is listed with the release of each version of the Facebook SDK for Android. Much like the JavaScript SDK, the version is prepended to any calls you make to the graph API through the Facebook SDK for Android.


1 Answers

You probably have to put in the relative url . Here's an example from the marketing batch API docs

curl -F 'access_token=______' 
  -F 'test1=@./test1.jpg'  
  -F 'batch=[
             {
              "method": "POST",
              "name": "create_creative",
              "relative_url": "<API_VERSION>/act_187687683/adcreatives",
              "attached_files": "test1",
              "body": "title=Test title&body=Test body&link_url=http://www.test12345.com&image_file=test1.jpg"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/adgroups",
              "body": "campaign_id=6004163746239&redownload=1&bid_type=CPC&bid_info={\"clicks\":150}&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test1"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/adgroups",
              "body": "campaign_id=6004163746239&redownload=1&bid_type=CPC&bid_info={\"clicks\":150}&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"GB\"]}&name=test2"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/adgroups",
              "body": "campaign_id=6004163746239&redownload=1&bid_type=CPC&bid_info={\"clicks\":150}&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"IE\"]}&name=test3"
             }
            ]' https://graph.facebook.com/

I'm assuming this is common to other requests as well.

Various other sources for reading

1.) From here

Pre-pend the version identifier to the start of the request path. For example, here's a call to v2.2:

GET graph.facebook.com
  /v2.2/me

This works for all versions, in this general form:

GET graph.facebook.com
  /vX.Y/{request-path}

2.) Putting it in the url seems to be for Dialogs and Social plugins

Dialogs

Versioned paths aren't just true for API endpoints, they're also true for dialogs and social plugins. For example, if you want to generate the Facebook Login dialog for a web app, you can prepend a version number to the endpoint that generates the dialog:

https://www.facebook.com/v2.0/dialog/oauth?
  client_id={app-id}
  &redirect_uri={redirect-uri}

Social Plugins

If you're using the HTML5 or xfbml versions of our social plugins, the version rendered will be determined by the version specified when you're initialising the JavaScript SDK.

If you're inserting an iframe or plain link version of one of our plugins, you'd prepend the version number to the source path of the plugin:

<iframe
 src="//www.facebook.com/v2.0/plugins/like.php?href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;width&amp;layout=standard&amp;action=like&amp;show_faces=true&amp;share=true&amp;height=80&amp;appId=634262946633418" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:80px;" allowTransparency="true"> </iframe>
like image 112
Vrashabh Irde Avatar answered Oct 07 '22 09:10

Vrashabh Irde