我在我的应用程序中使用社交登录(Facebook)(使用Ionic),以便提供一种登录我的应用程序的简单方法。但是我遇到了一个奇怪的问题。
有些用户(我无法重现,因为我看不到模式)会多次注册到我的数据库中(就像他们打开应用程序一样)。有些用户会错过一个电子邮件地址。但是,与应用程序和我的服务器脚本的唯一API连接如下:
<?php
error_reporting(0);
include_once('../lib/database_connect.php');
include_once('../lib/clean.php');
if(empty($_GET['fbID'])){
$resultFlag = false;
} else {
$fbId = clean($_GET['fbID']);
$fbEmail = clean($_GET['fbEmail']);
if(!empty($_GET['password'])){
$password = md5(clean($_GET['password']));
} else {
$password = "";
}
$fbFirstName = clean($_GET['fbFirstName']);
$fbLastName = clean($_GET['fbLastName']);
$fbGender = clean($_GET['fbGender']);
$fbLink = clean($_GET['fbLink']);
$fbLocale = clean($_GET['fbLocale']);
$fbAccessToken = clean($_GET['fbAccessToken']);
$resultFlag = false;
$sql = "SELECT * FROM user WHERE fb_id = $fbId";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0 && $fbId != 1){
while($info = mysql_fetch_assoc($result)){
$userID = $info['id'];
$resultFlag = true;
}
$sql = "UPDATE user SET fb_id = '".$fbId."', email = '".$fbEmail."', password = '".$password."', first_name = '".$fbFirstName."', last_name = '".$fbLastName."', gender = '".$fbGender."', fb_link = '".$fbLink."', locale = '".$fbLocale."', fb_token = '".$fbAccessToken."', last_active = NOW() WHERE email = '".$fbEmail."'";
mysql_query($sql);
} else {
$sql = "INSERT INTO user (fb_id, email, password, first_name, last_name, gender, fb_link, locale, fb_token, last_active, created) VALUES ('".$fbId."', '".$fbEmail."', '".$password."', '".$fbFirstName."', '".$fbLastName."', '".$fbGender."', '".$fbLink."', '".$fbLocale."', '".$fbAccessToken."', NOW(), NOW())";
mysql_query($sql);
$userID = mysql_insert_id();
$resultFlag = true;
}
$response =
array(
'userID' => $userID,
'userFirstName' => $fbFirstName,
'userLastName' => $fbLastName
);
}
if($resultFlag == true){
$response = array('result' => $resultFlag, 'user' => $response);
} else if ($resultFlag == false) {
$response = array('result' => $resultFlag);
}
echo $_GET['callback']."(".json_encode($response).")";
?>
如果用户已注册,脚本将使用唯一Facebook User ID
进行检查,否则会生成新记录。有趣的是,对于多个用户记录,记录完全相同,没有不同的Facebook User ID
或其他内容。
其他人有这样的问题吗?