简单的 facebook 应用程序与数据库服务器(使用包装器)进行通信。出于安全原因,需要检查请求服务器执行某些操作的用户是否真的是其 id 的所有者(在请求中发送)。
为此,对服务器的请求包含来自基于 javascript SDK 的 Web 应用程序的 access_token 和用户 ID。我想检查访问令牌所有者的 ID 和用户 ID 是否相同。第一步是从 Facebook 获取访问令牌所有者的 ID。使用代码:
class SessionValidator {
private $userId; //id of user
private $accessToken; //facebook user's access token
private $fb;
public function __construct($userId, $accessToken){
$this->userId = $userId;
$this->accessToken = $accessToken;
$app_id = @appId;
$app_secret = @secret;
$fb = new Facebook(array('appId' => $app_id, 'secret' => $app_secret));
$fb->setAccessToken($accessToken);
$this->fb = $fb;
}
public function authUserSession(){
$url = 'https://graph.facebook.com/';
$data['fields'] = $this->userId;
$data['access_token'] = $this->accessToken;
$response = $this->post_request($url, $data);
return $response;
}
private function post_request($url, $data){
return $this->fb->api('/me', 'POST', $data);
}
}
Facebook一直在回应:
Uncaught OAuthException: (#10) 应用程序没有此操作的权限
如果我删除了 line: ,也会有同样的反应$fb->setAccessToken($accessToken);
。我确定 appId 和 appSecure 是正确的。客户端应用程序和服务器端应用程序放置在不同的主机上,但两个域都作为应用程序域添加到 facebook 开发人员网站上。知道为什么我收到此错误吗?