PHP::GOOGLE API登录::localhost重定向您太多次错误



我仍在学习如何建立一些网站,并想尝试使用谷歌登录。然而,我犯了这样的错误。我一直在寻找许多类似的问题,但还没有找到答案。当我想进行身份验证时,就会发生这种情况。这是我的编码和文件。

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

<?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 '</pre>';
}
?>

这是我的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>";
}

希望有人能找到错误在哪里,以及我如何修复它。提前感谢

On header((位置重定向。将变量$redirect_uri更改为$auth_url

因为$auth_url尚未使用。

如果您已经在文件本身上设置了uri重定向。你刚刚做了无限重定向循环。

最新更新