当用户通过apprequest进入我的应用时,Facebook会将一个request_id附加到该网址。
我试图在用户授权我的应用程序之前访问此对象。当我尝试拨打api电话时:
FB.api('/'+requestId, function(response){ console.log(response); });
它返回以下内容:
error: Object
message: "An access token is required to request this resource."
但是我应该有访问权限,因为我的应用程序首先发送了请求!
我做了一些挖掘,我注意到在PHP方面,如果可用,它将使用user_access_token,否则将使用app_access_token。
这是一个安全限制(即:不能在客户端公开app_access_token)或者我做错了什么?
任何见解都会有所帮助。谢谢!
答案 0 :(得分:0)
当您向/ {user_id} / apprequests发出请求时,您必须已经授权用户... 由于请求是由您的应用程序创建的 - 只有您的应用程序可以管理 - 删除或读取已发送的请求。基本上,在用户授权你的app之前,他/她对你的应用程序是匿名的 - 因此你不可能阅读那些用户请求,因为你“不知道”他们是谁......
希望这会有所帮助......
答案 1 :(得分:-1)
以下博客文章介绍了如何与请求进行互动,并希望能够回答您的问题。
http://developers.facebook.com/blog/post/464
<?php
$app_id = 'YOUR_APP_ID';
$app_secret = 'YOUR_APP_SECRET';
$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $app_id .
"&client_secret=" . $app_secret .
"&grant_type=client_credentials";
$access_token = file_get_contents($token_url);
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$user_id = $data["user_id"];
//Get all app requests for user
$request_url ="https://graph.facebook.com/" .
$user_id . "/apprequests?" .
$access_token;
$requests = file_get_contents($request_url);
//Print all outstanding app requests
echo '<pre>';
print_r($requests);
echo '</pre>';
//Process and delete app requests
$data = json_decode($requests);
foreach($data->data as $item) {
$id = $item->id;
$delete_url = "https://graph.facebook.com/" .
$id . "?" . $access_token . "&method=delete";
$result = file_get_contents($delete_url);
echo("Requests deleted? " . $result);
}
?>
当用户通过您的应用令牌跟踪请求时,您可以访问应用生成的请求,但您需要用户令牌才能访问其余用户请求。