【问题标题】:facebook javascript SDK - how can I insert the userdata to databasefacebook javascript SDK - 我如何将用户数据插入数据库
【发布时间】:2017-03-15 12:17:23
【问题描述】:

我想使用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> 

【问题讨论】:

    标签: javascript php mysql facebook api


    【解决方案1】:

    您必须为此使用 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 文件中,您可以对数据做任何您想做的事情。在您的情况下,它将将电子邮件保存到数据库。我希望它会有所帮助

    【讨论】:

    • 当你运行这段代码时会发生什么?您是否在控制台(F12 -> 网络)中检查了您的请求会发生什么?
    • 浏览器控制台中没有错误,但您的代码警报:未定义索引:第 3 行 otherpage.php 的 mypath 中的电子邮件。我的其他 page.php 看起来像您的“file.php”只是有7行代码
    • 尝试将您的请求方法修改为GET。在 getInfo() 函数中将行更改为 http.open("GET", url, true); 并在您的 otherpage.php 文件中将代码更改为 if($_SERVER['REQUEST_METHOD'] == 'GET'){ $email = $_GET['email']; echo $email; //Do whatever you want with your email }
    • 无法再次使用相同的错误,但现在,在其他 page.php 中,出现错误消息注意:未定义索引:C:\xampp\htdocs\new 1.php 中的电子邮件第 3 行。(而在此之前,请仅在警惕时查看此内容)
    • 您的数据是否可以正确发送?转到按钮所在的页面,然后按 [F12] 打开控制台并转到“网络”选项卡。然后点击按钮,看看你的请求状态是否OK
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多