繁体   English   中英

Facebook登录网站

[英]Facebook Login On Website

我正在尝试在我的网站上实施Facebook登录。 我有一些问题。 当用户授予我权限时,我会感到困惑。我在数据库中创建了一个新帐户(因此,我可以使用我的功能来检查用户是否已登录以及是否需要更多人员)。

我的问题是,当用户(已经在我的网站上通过Facebook注册)时,我该如何登录? 仅使用他的Facebook ID? 但是,如果是,还有其他人知道我的Facebook ID,他可以登录吗?

一些代码段HTML:

<a href="#facebook" id="f_in" class="log">Log In With Facebook</a>

JS

window.fbAsyncInit = function() {
   FB.init({
     appId      : 'APPID', // App ID
     channelURL : '', // Channel File, not required so leave empty
     status     : true, // check login status
     cookie     : true, // enable cookies to allow the server to access the session
     oauth      : true, // enable OAuth 2.0
     xfbml      : false  // parse XFBML
   });
};
(function() {
   var e = document.createElement('script'); e.async = true;
   e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';                
   document.getElementById('fb-root').appendChild(e);
}());
//login Function
function login(){
    FB.getLoginStatus(function(response){
        if(response.status === 'connected'){
                getCurrentUserInfo(response);
        }else{
            FB.login(function(response) {
                if(response.authResponse) {
                  //if (response.perms)
                      getCurrentUserInfo(response);
                } else {
                  console.log('Auth cancelled.')
                }
            },{scope:'email, user_birthday'}); // which data to access from user profile
        }
    });
}
function getCurrentUserInfo() {
      FB.api('/me', function(userInfo) {
        do_reg(userInfo);
    });
} 
function do_reg(userInfo){
    var dataString = "username="+userInfo.first_name+"&id="+userInfo.userID"&email="+userInfo.email;
     $.ajax({
    type:"POST",
    url: "do_reg.php",
    data: dataString,
           success:function(data){
         console.log(data);     
       },
    error:function(){

    }
    });
}

还有一些PHP:

    $username = $_POST['username'];
    $email = $_POST['email'];
    $id = $_POST['id'];
    $pass = pass_gen(10);

    $userData['uName']  = $username;
    $userData['uEmail'] = $email;
    $userData['uFid']   =   $id; //facebook ID
    $userData['uPassword'] = $pass;
    $userData['uPasswordConfirm'] = $pass;

    $create_user_row = UserInfo::register($userData); //create user in my DB
    if (is_object($create_user_row)) {
                  $u = new User; 
                  $u->loginByUserID($create_user_row->getUserID()); //login to my website system using created user object if success.
}
    //password generator
    function pass_gen($length)
        {
            $random= "";

            srand((double)microtime()*1000000);

            $data = "AbcDE123IJKLMN67QRSTUVWXYZ";
            $data .= "aBCdefghijklmn123opq45rs67tuv89wxyz";
            $data .= "0FGH45OP89";

            for($i = 0; $i < $length; $i++)
            {
                $random .= substr($data, (rand()%(strlen($data))), 1);
            }

            return $random;
        } 

流程:1.用户单击Facebook登录1.1检查用户是否登录Facebook 2.2询问权限1.获取用户数据并通过ajax发送到do_reg.php 2.根据POST数据在数据库中创建新用户3.将用户登录网站系统使用创建的对象。

所以问题是,如果用户未登录到我的网站,但他已经通过Facebook在网站上创建了帐户,那么当他单击使用现有帐户的Facebook登录名时,我该如何登录?

通过Facebook ID? 我想我正在失去某种流动。

实际上,您不必手动处理用户的登录状态。 用于JavaScript的Facebook SDK自动处理访问令牌存储和登录状态跟踪,因此使用该应用程序的应用程序无需创建自己的机制即可,这就是使用用于JavaScript的Facebook SDK的全部目的。 登录文档将帮助您了解实际应如何进行。

但是,您可以在数据库中存储一些用户信息,以供自己参考。

我的问题是,该用户(已经在我的网站上通过Facebook注册)该如何登录? 仅使用他的Facebook ID? 但是,如果是,还有其他人知道我的Facebook ID,他可以登录吗?

正如Rahil所提到的,由于您正在使用FBLogin,因此最终无需重建Login机制。 用户在应用程序中单击FB登录按钮后,JS代码将检查用户的状态,并且FB将返回如下状态值,

**connected**. The person is logged into Facebook, and has logged into your app.
**not_authorized**. The person is logged into Facebook, but has not logged into your app.
**unknown**. The person is not logged into Facebook, so you don't know if they've logged into your app

用户流程将是这样,

1)首次用户访问您的站点并单击FB按钮

2)现在,FB检查用户是否已登录Facebook

  If the user is already logged in then FB check user already authorised or not

  If not then FB shows the auth dialog 

     User accepts your permissions then Fb direct to your website

     Now FB will return "connected" status. During this time add on entry in your table about the new user

3)第二次,当用户访问您的网站并单击FB登录时,

 Now you will get the connected response from FB, then check your db table, If the user is a new user or already a member by checking into your table for an entry.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM