如何使用PHP将用户信息从facebook sdk拉入我网站的数据库

时间:2014-07-29 08:43:28

标签: php mysql facebook facebook-login

我已经使用Facebook的java脚本sdk在我的网站上启用了facebook登录。现在我想从Facebook提取用户的基本信息,并将其存储在我网站的MySQL数据库中。我需要这个通过PHP完成,因为替代注册页面是在PHP中实现的。如果有任何其他更好的方法,请提及。

编辑: 我遵循,我需要使用响应对象,但我应该放置对象请求?和PHP“发布”代码? 我对php比较新,下面的代码行在哪里?

 FB.api('/me', function(response) {
console.log(JSON.stringify(response));

});

将返回一组值:

{   “ID”: “101540562372987329832845483”   “电子邮件”:“example@example.com”   “FIRST_NAME”: “鲍勃”,   [...] }

编辑2:

FB.api做api电话&接收包含用户信息的响应对象,但是我必须使用下面的确切“code1”,还是可以使用我熟悉的“code2”中的其他方式?

代码1:

FB.login(function(response) {
 if (response.authResponse) {
 console.log('Welcome!  Fetching your information.... ');
 FB.api('/me', function(response) { 
  var fbname=response.name;
  var fbid=response.id;
 $.ajax({
 type: "POST",
 url: page_for_storing_information,
 data: "name="+fbname+"&uid="+fbid,
     success: function(msg){ 
      }
     });
 console.log('Good to see you, ' + response.name + '.');
  });
   } else {
   console.log('User cancelled login or did not fully authorize.');
   }
});

代码2:

$name = mysqli_real_escape_string($con, $_POST['response.name']);
$email = mysqli_real_escape_string($con, $_POST['response.email']);
$id = mysqli_real_escape_string($con, $_POST['response.id']);


$sql="INSERT INTO questbook (name, email, id)
VALUES ('$name', '$email', '$comment', )";

if (!mysqli_query($con,$sql)) {
   die('Error: ' . mysqli_error($con));
 } 

2 个答案:

答案 0 :(得分:3)

Facebook建议使用新的PHP SDK 4作为API。它需要PHP 5.4+,确保你的服务器上有。这里有一些链接可以帮助您入门,Facebook文档并不是非常详细的新PHP SDK(还):

您可能想要使用的是“JavaScript登录助手”。

编辑:我意识到您甚至不需要使用PHP SDK,因为您甚至通过JavaScript请求基本数据。所以你需要做的就是使用AJAX用数据库存储代码调用你的php文件。

示例AJAX代码:

var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function() {
    if(ajaxRequest.readyState === 4) {
        console.log(ajaxRequest.responseText);
    }
};
//send with POST
ajaxRequest.open('POST','yourscript.php',true);
ajaxRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //like a form
ajaxRequest.send('name=xxxx&fbid=xxxxx');

不确定您是否知道如何使用MySQL,但您应该谷歌“PDO” - 使用MySQL和PHP的推荐方法:http://php.net/manual/en/book.pdo.php

答案 1 :(得分:1)

仔细阅读 - https://developers.facebook.com/docs/reference/php/4.0.0 一切都在这里描述。