2013-11-21 4 views
0

Я пытаюсь реализовать Facebook Войти на моем сайте. И у меня есть некоторые вопросы. Я укладываю, когда пользователь дает мне разрешение. Я создаю новую учетную запись в своей БД (поэтому я могу использовать свою функцию, чтобы проверить, зарегистрирован ли пользователь и для большего количества сотрудников).Facebook Войти на сайт

Мой вопрос: когда пользователь (уже зарегистрирован на моем сайте с Facebook), как мне войти в систему? Использование только его идентификатора Facebook? Но если да, то кто-нибудь еще знает мой идентификатор Facebook, он может войти в систему?

Некоторые фрагмент кода 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; 
     } 

Flow: 1.User нажмите Facebook Вход 1.1 Проверка является пользователь вошел в систему на Facebook 2.2 Проверить разрешение A sked 1. Получить данные пользователя и отправить через ajax в do_reg.php 2. Создает нового пользователя в БД на основе данных POST 3. Вход пользователя в систему сайта с использованием созданного объекта.

Итак, вопрос в том, что пользователь не вошел в систему на Мой сайт, но он уже создал учетную запись через Facebook на веб-сайте. Как мне войти в систему, когда он нажимает логин в Facebook с помощью существующей учетной записи?

Через Facebook ID? Я думаю, что теряю какой-то поток.

ответ

0

На самом деле вам не нужно вручную заботиться о статусе входа для пользователя. Facebook SDK для JavaScript автоматически обрабатывает доступ к хранилищу токенов и отслеживает статус входа, поэтому приложениям, использующим его, не нужно создавать свои собственные механизмы для этого, и в этом весь смысл использования SDK для JavaScript для JavaScript. login documentation поможет вам понять, как на самом деле это должно быть сделано.

Однако вы можете сохранить некоторую пользовательскую информацию в своей базе данных для своей собственной ссылки.

0

Мой вопрос: когда пользователь (уже зарегистрирован на моем сайте с Facebook), как мне войти в систему? Использование только его идентификатора Facebook? Но если да Кто-нибудь еще знает мой идентификатор facebook, который он может войти?

Как упоминал Рахил, поскольку вы используете FBLogin, вам не нужно перестраивать механизм входа в ваш конец.После того, как пользователь нажимает на кнопку 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. 
+0

Благодарим вас за ответ. Я понимаю, что Facebook управляет процессом входа в систему, но мне нужна только информация пользователя в Facebook. На основе его информации создайте локальную учетную запись на моем веб-сайте. Так что я думаю об этом так. 1. JS sdk, чтобы запросить разрешение и проверить статус входа в систему 2. PHP проверить активное приложение User для моего приложения // не отправлять какие-либо данные через ajax и оставлять это в facebook. 3. На основании информации, предоставленной с PHP SDk, создайте локальную учетную запись и войдите в Локально // из этого poitn. Мне не нравится, если пользователь регистрируется в Facebook. – Froxz

+0

Я понимаю, что это немного странно, но у меня есть некоторый штат, чтобы делать с местными учетными записями. – Froxz

Смежные вопросы