Авторизация на сайте через Facebook

160
01 февраля 2020, 22:50

Пытаюсь написать регистрацию и авторизацию на сайте с помощью API фейсбука. Необходимые данные от FB приходят, после я их заношу в БД и устанавливаю куки для юзера и после делаю редирект в личный кабинет, но после редиректа в адресной строке мне выводит https://mywebsite.com/#_=_

header('Content-Type: text/json; charset=utf-8');
include_once('db.php');
include_once('inc.class.php');
include 'config.php';
if (!$_GET['code']) {
    exit('error code');
}
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;  
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];  
    }
    return $code;
}
$token = json_decode(file_get_contents('https://graph.facebook.com/v2.9/oauth/access_token?client_id='.ID.'&redirect_uri='.URL.'&client_secret='.SECRET.'&code='.$_GET['code']), true);
if (!$token) {
    exit('error token');
}
$data = json_decode(file_get_contents('https://graph.facebook.com/v2.9/me?client_id='.ID.'&redirect_uri='.URL.'&client_secret='.SECRET.'&code='.$_GET['code'].'&access_token='.$token['access_token'].'&fields=id,name,email,gender'), true);
$email=$data['email'];
$login=$data['id'];
if (!$data) {
    exit('error data');
}

if($data){
        $row = ($mysqli->query("SELECT login FROM `user` WHERE login = '".$login."' LIMIT 1"));
        $check = $row->fetch_assoc();
        if($check){
            $hash = md5(generateCode(10));
            $mysqli->query("UPDATE `user` SET user_hash='".$hash."' WHERE login='".$login."'");
                session_start();
                setcookie("hash", $hash, time()-60*60*24);
                setcookie("id", $check['id'], time()-60*60*24);
                $ResHash = $mysqli->query("SELECT `user_hash` FROM `user` WHERE login='$login'");
                $ArrayHash = $ResHash->fetch_assoc();
                # Ставим куки
                setcookie("id", $check['id'], time()+60*60*24);
                setcookie("hash", $ArrayHash['user_hash'], time()+60*60*24);
                $_SESSION['userid'] = $check['id'];
                $_SESSION['Val_Coin'] = 'zzz';
                $_SESSION['Prod_Coin'] = 'ccc';
                header('Location: https://mywebsite.com/');
        }
        else {
            $sql = $mysqli->query("INSERT INTO `user` (`login`, `mail`,`ident`,`status`) VALUES ('$login', '$email', 'FB', 'true')");
            $hash = md5(generateCode(10));
            $mysqli->query("UPDATE `user` SET user_hash='".$hash."' WHERE login='".$login."'");
                session_start();
                setcookie("hash", $hash, time()-60*60*24);
                setcookie("id", $check['id'], time()-60*60*24);
                $ResHash = $mysqli->query("SELECT `user_hash` FROM `user` WHERE login='$login'");
                $ArrayHash = $ResHash->fetch_assoc();
                # Ставим куки
                setcookie("id", $check['id'], time()+60*60*24);
                setcookie("hash", $ArrayHash['user_hash'], time()+60*60*24);
                $_SESSION['userid'] = $check['id'];
                $_SESSION['Val_Coin'] = 'zzz';
                $_SESSION['Prod_Coin'] = 'ccc';
                header('Location: https://mywebsite.com');
        }
}

Код с кнопкой логина

<? include 'config.php' ?>
<a href="https://www.facebook.com/v2.9/dialog/oauth?client_id=<?=ID?>&redirect_uri=<?=URL?>&response_type=code&scope=public_profile,email" target="_blank">login fb</a>
READ ALSO
Залипают очереди в RabbitMQ (Yii2)

Залипают очереди в RabbitMQ (Yii2)

Доброго времени суток!

156
MySQL: оператор WHERE IN и ORDER BY DESC

MySQL: оператор WHERE IN и ORDER BY DESC

Существует таблица table(timestamp, 'id', 'price')В таблице более 20 тыс

185
Redirect 404 и AJAX

Redirect 404 и AJAX

На локальной машине (Win7 x64) имеется Apache (24

157
Дублируются изображения laravel

Дублируются изображения laravel

В базе есть url изображенийСкрипт должен перебирать, загружать каждое на сервер в 3 папки: основная, копия, копия меньшего размера

150