php - Facebook 登录困惑

标签 php javascript facebook codeigniter codeigniter-2

我计划将 Facebook 登录按钮集成到我的网站中。现在我有一个 Facebook 登录按钮,当按下该按钮时,会弹出一个新窗口,请求允许访问用户的基本信息和电子邮件。到现在所做的一切都来自于关注http://developers.facebook.com/docs/guides/web/#login .我正在使用 PHP(带有 Codeigniter 框架、Tank auth 身份验证库)和 jQuery。

问题:现在在我的网站上添加登录按钮后,Facebook 不再有任何关于如何继续的说明?

  1. 如何从 facebook 检索用户信息以插入我的数据库(如果是第一次访问)
  2. 如何确定用户已允许我的网站访问他的信息?
  3. 如果已授予访问权限,我该如何将用户重定向到新页面?

我知道 SDK 最近发生了变化,谷歌搜索有关它的教程只是给我一些教程,说它们已经过时了。任何帮助我指出正确方向的帮助将不胜感激!谢谢!

HTML/JS

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '123',
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : true,
        });
    };
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
</script>

<div id="splash_fbconnect_login_button" class="fb-login-button" data-scope="email, user_education_history, user_work_history"></div>

最佳答案

快速编辑:转到 https://github.com/facebook/connect-js确保您拥有最新版本并使用 PHP 版本,我发现它使它变得非常容易。

1) 如何从 facebook 检索用户信息以插入我的数据库(如果是第一次访问)

$user_profile['last_name'];
$user_profile['first_name'];
$user_profile['gender']; 

等等

2) 如何确定用户允许我的网站访问他的信息?

Facebook API 知道这一点,不用担心 :-) 当用户点击登录时会弹出一个弹出窗口(正如您在问题中提到的那样),当他们点击允许完成时。

然而,您必须做的一件事是在 Facebook 中创建一个应用程序,否则它将无法运行,我不确定您是否已经这样做,所以请转到 https://developers.facebook.com/apps

3)如果已授予访问权限,如何将用户重定向到新页面?

在 if 语句中的 JavaScript 重定向,这是我的样子

一定要在这里设置一些变量:

   <?php // Set the variables for the MVC
      $first_name = $user_profile['first_name'];
      $last_name = $user_profile['last_name'];
      $full_name = $first_name . " " . $last_name;
      $fb_id = $user_profile['id'];
      $gender = $user_profile['gender'];



       $SrcUser = mysql_query("SELECT * FROM users WHERE fb_id = '" . $fb_id . "'") or die(mysql_error());
      $CheckDB = mysql_num_rows($SrcUser);

      if($CheckDB == 1){
          // If user has an account

          while ($row = mysql_fetch_array($SrcUser)) 
                { 
                     $id = $row["id"];
                     $user_level = $row["user_level"];
                }
        session_start();
        $_SESSION['user_name'] = $full_name;
        $_SESSION['user_level'] = $user_level;
        $_SESSION['user_id']= $id;  
        // Javascript redirect.. its kinda cheating to be honest as if i dont use it i will have awkwardness with header errors
        ?>
  <script type="text/javascript">
        window.location = "myaccount.php"
        </script>
        <?
      } else {
          // If user does not have an account create new
        ?>  <?
        session_start();
        $_SESSION['fb_id']= $fb_id;  

        if($gender == "male"){
            $gender = "1";
        } else {
            $gender = "0";
        }
        $_SESSION['r_full'] = $full_name;
        $_SESSION['r_gender'] = $gender;

        mysql_query("INSERT INTO users (full_name, gender, fb_id)
            VALUES ('$full_name','$gender','$fb_id')");
        $user_id = mysql_insert_id();  
        $md5_id = md5($user_id);
        mysql_query("update users set md5_id='$md5_id' where id='$user_id'");

            $md5_id = md5($user_id);
            mysql_query("update users set md5_id='$md5_id' where id='$user_id'");

        ?>

希望这对您有所帮助!

关于php - Facebook 登录困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323529/

相关文章:

php - 我的路线返回 404,我该如何修复它们?

php - 如何使用动态键循环 PHP 对象

javascript - ruby 代码显示为文本而不是在 js.erb 文件中执行

javascript - AngularJS 中使用整数字段进行过滤

ios - 解析 + Facebook 问题

php - PrestaShop - 覆盖 Controller 不起作用

php - 从 php scandir 列表中删除文件夹

javascript - onClick 处理程序未向 ReactDOMServer.renderToString 注册

android - 我们如何从 SDK 知道我们使用的是哪个图形 API 版本

android - 在应用程序的圆形 ImageView 中显示 FB 个人资料图片