Javascript FB登录API-检查用户是否为实际用户
这是一个ordenary facebook javascript登录函数。 如果用户已连接并验证,我将通过Javascript FB登录API-检查用户是否为实际用户,javascript,php,facebook,facebook-graph-api,Javascript,Php,Facebook,Facebook Graph Api,这是一个ordenary facebook javascript登录函数。 如果用户已连接并验证,我将通过fb.api('/me')向包含给定ID的服务器发送ajax请求。但是任何人都可以修改代码,并以他们可以使用其他人的ID并将其发送到服务器的方式编辑代码 如何验证通过javascript登录的用户是实际用户,而不仅仅是更改代码的用户?好,因为您正在使用PHP作为后端语言 我建议除了发送用户id之外,还可以发送id散列,其中添加了一些特殊的盐,而这些盐并没有显示在java脚本中,只是显示在ph
fb.api('/me')
向包含给定ID的服务器发送ajax请求。但是任何人都可以修改代码,并以他们可以使用其他人的ID并将其发送到服务器的方式编辑代码
如何验证通过javascript登录的用户是实际用户,而不仅仅是更改代码的用户?好,因为您正在使用PHP作为后端语言 我建议除了发送用户id之外,还可以发送id散列,其中添加了一些特殊的盐,而这些盐并没有显示在java脚本中,只是显示在php代码中 举例来说
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();
}
});
这段代码是用来展示这个想法的,它不是一个完整的代码,可以使用一个非常安全的方法是使用PHP SDK: 看看“用法”:
例如,您可以在使用JS SDK登录后重新加载页面,并在加载页面之前使用PHP SDK进行检查。调用服务器端的
/me
。这是散列密码,而不是像授权那样的普通密码,在整个Web上都使用。啊,好吧,这只是一个普通的md5字符串。然而,md5是不安全的,客户端上的秘密来自哪里?看看答案,客户端从服务器端得到一个黑盒秘密哈希,它与同样基于服务器的salt相结合,我同意你的观点,md5哈希现在很常见,所以我使用salt,你也可以使用SHA1,尽管我很乐意听到您的贡献并从中受益,谢谢,但在页面加载时,您会在php中生成一个秘密并在url中传递。然后呢?无意冒犯,我只是想理解。总是愿意学习新的东西:)-现在我只是不明白,那杂凑的目的是什么?你什么时候使用它,后端什么时候会被调用?好的,我用你的id和salt组合生成secret,所以你会把它发送到后端,让你使用ajax登录,假设用户如asker所说手动更改了id,那么当我运行上面的后端代码时,我会发现这是一个试图劫持idIs的假用户,这是“非常安全的”吗路还是“安全”的路?什么使它“相当”安全?我如何提高安全性?“安全”;)尤其是因为它都是用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
}
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
}