Reputation: 11226
I'm trying to get information regarding apprequests sent by my application (see https://developers.facebook.com/docs/reference/api/user/#apprequests), but even after providing my app access token, I'm getting this response whenever I try to access an apprequest object in the Graph API:
{
"error": {
"message": "An access token is required to request this resource.",
"type": "OAuthException",
"code": 104
}
}
I retrieve my app access token by issueing a GET request to the following URL:
I then try to access the apprequest object by hitting
https://graph.facebook.com/REQUEST_ID?access_token=APP_ACCESS_TOKEN
When I hit this URL, I get the error as defined above. I'm providing the access_token in the URL, so this error is either a bug or I'm misunderstanding the documentation, but I think a Facebook blog post (see https://developers.facebook.com/blog/post/464/) gets apprequest information in the exact way as I have above (getting app access token, request apprequest by hitting Graph API).
Thanks for the help!
Upvotes: 1
Views: 1289
Reputation: 88
I had the same problem just now. Probably you had solve it by now, but I will reply anyway for everyone who arrives here.
If you notice the $apprequest_utl you will see that it's something like
Here, what was supposed to be "&" is in fact "&", which anyway is the same but doest not work with facebook apps with php function file_get_contents. Instead, use curl and all works fine!
<?php
function app_request ($request_string,$app_id,$app_secret,$user_id,$type) {
$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($token_url);
$request_string=utf8_encode($request_string);
$apprequest_url ="https://graph.facebook.com/" .
$user_id .
"/apprequests?message=" .
$request_string .
"&data=" .
$type .
"&" .
$app_access_token . "&method=post";
$result = curl($apprequest_url);
echo "Request id number: " . $result;
}
function curl($url){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
return curl_exec($curl);
curl_close($curl);
}
//Call the function and make the app request!
app_request("Test",$APP_ID,$APP_SECRET,$USER_ID,"Test");
?>
Upvotes: 2