簡單的Facebook應用程序與數據庫服務器(使用包裝器)進行通信。出於安全原因,需要檢查用戶詢問服務器是否確實是其ID的所有者(根據請求發送)。Facebook應用程序:服務器端訪問令牌驗證
爲此,服務器請求包含來自基於JavaScript SDK的Web應用程序的用戶的access_token和id。我想檢查訪問令牌的所有者和用戶的ID是否相同。第一步是從Facebook獲取訪問令牌的所有者身份。使用代碼:
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一直給予迴應:
未捕獲OAuthException:(#10)應用程序無權 這個動作
相同的反應是,如果我已刪除行:$fb->setAccessToken($accessToken);
。我確定appId和appSecure是正確的。客戶端應用程序和服務器端應用程序放置在不同的主機上,但這兩個域都作爲應用程序域添加到Facebook開發人員站點上。任何想法,爲什麼我收到這個錯誤?
非常感謝。它完美的作品。 –
沒問題,很高興爲你工作:)你可能想選擇這個答案btw!只需點擊此答案左上方投票按鈕下方的複選標記即可! –