javascript - facebook javascript SDK - 如何将用户数据插入数据库

标签 javascript php mysql facebook api

我想使用javascript sdk,因为facebook php sdk新版本不支持我公司的PHP版本。
好吧...我想将 FacebookUser 的电子邮件插入数据库 MySQL 中。 请查看函数 get_Info()。我想要将“response.email”的值解析为PHP变量并插入MySQL,但我不知道该怎么做,因为这个变量在js函数中。

  window.fbAsyncInit = function() {

  FB.init({
    appId: 'xxxxxxxxxxxx',  //Your appId
    xfbml: true,
    version: 'v2.8'
  });
  FB.AppEvents.logPageView();
  FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
      document.getElementById('status').innerHTML = 'We are connected.';
      document.getElementById('fb_login').style.visibility = 'hidden';
    } else if (response.status === 'not_authorized') {
      document.getElementById('status').innerHTML = 'We are not logged in.';
    } else {
      document.getElementById('status').innerHTML = 'You are not logged into Facebook';
    }
  });
};

(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {
    return;
  }
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_US/sdk.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

function fb_login() {
  FB.login(function(response) {
    if (response.status === 'connected') {
      document.getElementById('status').innerHTML = 'We are connected.';
      document.getElementById('fb_login').style.visibility = 'hidden';
    } else if (response.status === 'not_authorized') {
      document.getElementById('status').innerHTML = 'We are not logged in.';
    } else {
      document.getElementById('status').innerHTML = 'You are not logged into Facebook';
    }
  }, {
    scope: 'email'
  });
}

function getInfo() {
  FB.api('/me', 'GET', {
    fields: 'first_name,last_name,name,id,email'
  }, function(response) {
    document.getElementById('status').innerHTML = response.email;
  });

  FB.api('/me', 'GET', {
    fields: 'first_name,last_name,name,id,email'
  }, function(response) {
    document.getElementById('status2').innerHTML = response.name;
  });
}

function fb_logout() {
  FB.logout(function() {
    document.location.reload();
  });
}

html

<div id="status"></div>   <div id="status2"></div>
                <button onclick="getInfo()"> Get Info</button>
                <button onclick="fb_login()" id="fb_login"> Login with Facebook </button>
                <button onclick="fb_logout()"> Log out </button> 

最佳答案

为此,您必须使用 AJAX。如果要将 JS 数据传递给 PHP,请进行 AJAX 调用。例如,您可以这样做:

1。像这样修改您的 getInfo() 函数:

function getInfo() {
  FB.api('/me', 'GET', {
    fields: 'first_name,last_name,name,id,email'
  }, function(response) {
    var email = response.email;

    var http = new XMLHttpRequest();
    var url = "path/to/your/file.php";
    var data = "email=" + email;
    http.open("POST", url, true);    
    http.onreadystatechange = function() {//Call a function when the state changes.
        if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
        }
    } 
    http.send(data);
  });
}

2。创建一个file.php并编写以下代码:

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $email = $_POST['email'];
    echo $email;
    //Do whatever you want with your email
}
?>



该代码的作用是使用简单的 AJAX 调用将 JS 数据发送到 PHP 文件。在您的 file.php 文件中,您可以对数据执行任何您想要的操作。在你的情况下,它将把电子邮件保存到数据库中。希望对您有所帮助

关于javascript - facebook javascript SDK - 如何将用户数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375654/

相关文章:

javascript - node.js 中的异步编程是否可以加速 CPU 密集型任务?

php - 如何防止 doctrine2 返回某些字段

php - 如何在几分钟内进入谷歌搜索结果?

mysql - 如何在 MySQL 中返回数据透视表输出?

javascript - Trimpath Junction Javascript 框架发生了什么?

javascript - 使用 HTML5 本地存储保存多个值

php - 在 PHP 中使用 preg_match 获取包含我的模式字符串的行之后的行

php - codeigniter - 如何使用 'left join' 子句查询 'where_in'

mysql - 为什么 INNER JOIN 在包含匹配数据的两个表上返回空集?

javascript - 管理大型表单 - ReactJS