Facebook API - delete status Facebook API - delete status curl curl

Facebook API - delete status


Fixed!

You have to prepend the userid to the object ID when deleting:

DELETE https://graph.facebook.com/673509687_104812882909249?access_token={access_token}where673509687 is my userID and 104812882909249 is the objectID


For anyone still struggling with this, I found out what my issue was attempting to delete application requests that I had previously created using the PHP SDK, which was resulting in this error.

(#2) Invalid parameter: Body of an error/warning message. Title is: Invalid parameter

The problem was essentially with which access token was being used; user or application.

The specific scenario I was working on was where a user in my application has invited a friend Facebook (using an app request) but then wants to revoke that invite. In this case I want to delete the app request on Facebook that was previously created. However, at this point in time, the logged in user is not the recipient of the app request, but the sender.

Looking at the PHP SDK code, it automatically uses the user access token if it has one, over the application access token. In fact, there doesn't appear to be a way to explicitly get the application token from the SDK.

When attempting to delete the app request using the following...

$facebook->api('/'.$fb_request_id, 'DELETE');

...and letting the PHP SDK choose the user token, I received the (#2) Invalid parameter error message. However, if I manually construct the application access token (where the format is "$app_id|$app_secret" and pass it as an array key in a third parameter...

$facebook->api('/'.$fb_request_id, 'DELETE', array('access_token' => $app_access_token);

..then the call succeeds.

So, essentially you need to use the application access token to delete the app requests if the current user is not the recipient of the app request.

I hope this helps anyone else struggling with the same issue.


I modified your code slightly. (Should echo "true" if done correctly) Here's what is currently working for me.

Also note this does not erase events created via Facebook.That's why your receiving the permissions error. This only erases events created through your application... (application linked to $app_id, $app_secret)

//First authenticate a token$app_id = "APP ID GOES HERE";$app_secret = "SECRET APP ID GOES HERE";$my_url = "WHATEVER THIS PAGES NAME IS GOES HERE";  //I'm not sure but I think REQUEST is still allowed....right? if not change it to GET/POST$code = $_REQUEST["code"];if(empty($code)) {$auth_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id . "&redirect_uri=" . urlencode($my_url). "&scope=create_event";echo("<script>top.location.href='" . $auth_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);//Use TRUE and FALSE not 0 and 1's like you originally had it//264853420218553 is the event id.$ch = curl_init("https://graph.facebook.com/264853420218553?" . $access_token . ""); curl_setopt($ch, CURLOPT_VERBOSE, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_TIMEOUT, 120);curl_setopt($ch, CURLOPT_POST, TRUE);//curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_CAINFO, NULL); curl_setopt($ch, CURLOPT_CAPATH, NULL); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);$result = curl_exec($ch); echo $result;?>