PHP :: GOOGLE API LOGIN :: localhost перенаправлял вас слишком много раз ОШИБКА - PullRequest
0 голосов
/ 26 ноября 2018

Я все еще учусь строить какой-то веб-сайт и хочу попробовать использовать Google Login.Однако я получил такую ​​ошибку.Я искал много похожих вопросов, но пока не нашел решения.Это происходит, когда я хочу сделать авторизацию.Вот мое кодирование и файлы.

auth.php

<?php

require_once ('libraries/Google/autoload.php');

session_start(); //session start


$client_id = 'xxxxxxxxxxxxxxx.apps.googleusercontent.com';
$client_secret = 'xxxxxxxxxxxxxxxxxxxx';
$redirect_uri = 'http://localhost/google2/auth.php';

//database
$db_username = "root"; //Database Username
$db_password = ""; //Database Password
$host_name = "xxxxxxxxx"; //Mysql Hostname
$db_name = 'xxxxxxxx'; //Database Name


$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope("email");
$client->addScope("profile");


if (!isset ($_GET['code'])) {
    $auth_url = $client->createAuthUrl();
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
else {
    $client->authenticate($_GET['code']);
    $_SESSION['access_token'] = $client->getAccessToken();

    try {
        $service = new Google_Service_Oauth2($client);
        // $_SESSION['access_profile'] = $service->userinfo->get();
        $user = $service->userinfo->get(); //get user info
        $user = $_SESSION['access_profile'];

        // connect to database
        $mysqli = new mysqli($host_name, $db_username, $db_password, $db_name);
        if ($mysqli->connect_error) {
            die ('Error : (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);

        }

        //check if user exist in database using COUNT

        $result = $mysqli->query("SELECT COUNT(google_id) as usercount FROM google_users WHERE google_id=$user->id");
        $user_count = $result->fetch_object()->usercount;           //will return 0 if user doesn't exist

        //masukin ke mysql nih//
        $statement = $mysqli->prepare("INSERT INTO google_users (google_id, google_name, google_email, google_link, google_picture_link) VALUES (?,?,?,?,?)");
        $statement->bind_param('issss', $user->id, $user->name, $user->email, $user->link, $user->picture);
        $statement->execute();
        echo $mysqli->error;



    }
    catch (\Exception $e) {
        echo $e->__toString();
        unset ($_SESSION['access_token']);
        die;
    }
    header('Location:afterlogin.php');
}

?>

И это мой afterlogin.php

<code><?php


session_start();

if (isset ($_SESSION['access_token']) && $_SESSION['access_token']) {
    $user = $_SESSION['access_profile'];
      //print user details
  echo '<pre>';
  print_r($_SESSION['access_profile']);
  echo '
';}?>

Тогда это мой index.php

<?php

require_once ('libraries/Google/autoload.php');

session_start(); //session start

if (isset ($_SESSION['access_token']) && $_SESSION['access_token']) {
  header('Location:afterlogin.php');
}
else {
  echo "<a href='auth.php'> Login dengan akun Google</a>";
}

надеюсь, кто-нибудь найдет, где находится ошибка и как я могу ее исправить .. Заранее спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

При перенаправлении местоположения в заголовке ().измените переменную $ redirect_uri на $ auth_url

Поскольку $ auth_url еще не использовался.

, если вы установили этот редирект uri для файла самостоятельно.Вы только что сделали бесконечный цикл перенаправления.

...