0
FB.Event.subscribe('auth.authResponseChange', function(response) {
    if (response.status === 'connected') {
        FB.api('/me', function(response) {
            switchTo('loggedin');
            // connected & ok
        });
    } 
    else if (response.status === 'not_authorized') {
        switchTo('loggedout');
        // connected but not ok

        FB.login();
    } 
    else 
    {
        switchTo('loggedout');
        // not connected

        FB.login();
    }
});

所以这是一个普通的 facebook javascript 登录功能。如果用户已连接并经过验证,我会向包含给定 ID 的服务器发送 ajax 请求fb.api('/me')。但是任何人都可以更改代码,并以他们可以使用其他人的 ID 并将其发送到服务器的方式编辑代码。

如何验证通过 javascript 登录的用户是实际用户,而不仅仅是更改代码的用户?

4

2 回答 2

1

一种非常安全的方法是使用 PHP SDK:https ://github.com/facebook/facebook-php-sdk

看“用法”:

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 is logged in
} else {
  //user is not logged in
}

例如,您可以在使用 JS SDK 登录后重新加载页面,并在加载页面之前检查 PHP SDK。

于 2013-10-23T08:30:32.007 回答
0

好的,因为您使用PHP作为后端语言

我建议除了发送用户 id 之外,您还可以发送用一些特殊盐加盐的 id 哈希,这些盐在您的 java 脚本中没有显示在您的 php 代码中

例如

var url = "www.example.com/?id=SOME_ID&secret=<?php echo md5(SOME_ID.SECRET)";

并在后端

 $secret = $_GET['secret'];
 $id = $_GET['id'];
 if (md5($id.SECRET) == $secret){
  //User is ok here 
 }else{
  //Some one missing around
 }

此代码用于显示想法而不是使用的完整代码

于 2013-10-23T08:19:22.490 回答