我正在尝试在我的网站上实施Facebook登录。我有一些问题。 当用户授予我权限时,我被堆积在我的数据库中创建一个新帐户(所以我可以使用我的功能来检查用户是否已登录并为更多员工)。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检查权限A sked 1.获取用户数据并通过ajax发送到do_reg.php 2.基于POST数据在数据库中创建新用户 3.使用创建的对象将用户登录到网站系统。
所以问题是如果用户没有登录到我的网站,但他已经通过Facebook在网站上创建帐户当他点击使用现有帐户登录Facebook时如何登录他?
通过Facebook帐号? 我想我失去了某种流动。
谢谢您的回复。据我所知,Facebook处理登录处理,但我需要的只是Facebook用户信息和基于他的信息在我的网站上创建本地帐户。 所以我想这样。 1. JS sdk询问权限并检查登录状态 2. PHP检查用户活动seeion为我的应用程序//不发送任何数据通过ajax并让它处理这个Facebook。 3.基于PHP SDk给出的信息创建本地帐户和本地登录//所以从这poitn我不在乎如果用户在Facebook登录。 – Froxz
我知道这是一个有点怪异的地方,但我有一些工作人员要处理本地帐户。 – Froxz