数据库使用社交登录(Facebook)生成完全相同的用户条目

时间:2015-11-28 10:05:11

标签: php facebook facebook-graph-api login

我在我的应用程序中使用社交登录(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或其他内容。

其他人有这样的问题吗?

0 个答案:

没有答案