如何使用javascript安全地实现fb登录

时间:2014-03-03 09:56:32

标签: javascript jquery facebook web-applications login

我正在使用Jquery在我的webproject中实现facebook登录。一切都很好,但我担心人们可以尝试的骇人听闻,因为一切都在萤火虫中可见。我的意思是,任何人都可以看到响应Facebook请求访问的URL;数据随时可用,app_id嵌入在js文件中。所以,我认为我可能一直在做错事,所以在这里,我要明白这一点。所以,据我所知,Facebook登录过程如下:

->User Clicks on 'FB Login'
->Request goes to Fb with App ID
->Fb cross checks for App credentials
->Once authorised, it checks for user's credentials
->Asks user to log in if he/she isn't logged in->Returns the requested data by the app for the user
->Calls the call back function and that's where we come back again in scene.

在上面的过程中,让我感到困惑的是,如果用户可以看到在最后一步中将哪些数据传递到哪个URL,那么他不能简单地将虚假脚本调用到该URL并恶意登录?我知道有一个access_token但我很困惑如何在后端使用该访问令牌(或者,据我所知),以确保即将到来的请求仅来自Facebook登录成功时的回调函数? 提前致谢

1 个答案:

答案 0 :(得分:2)

我个人的方法是使用PHP SDK再次检查用户是否已登录:https://github.com/facebook/facebook-php-sdk

您只需将用户的Facebook ID添加到AJAX呼叫中,如果用户是您脚本开头的正确用户,请检查服务器端:

require 'facebook-php-sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'YOUR_APP_ID',
  'secret' => 'YOUR_APP_SECRET',
));

// Get User ID
$user = $facebook->getUser();
if ($user && $user === $_GET['fbid']) {
  ...
}