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