#php #google-api-client
#php #google-api-client
Вопрос:
Я просто хочу спросить, почему, когда я нажал кнопку входа в систему с помощью Google, она не работает и вообще ничего не показывает?
Ниже приведен мой код:
index.php файл:
<?php require "../../Controller/SigninController.php"; use AmppAuth; use AmppValidate; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sign In</title>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Montserratamp;display=swap" rel="stylesheet">
<link rel="stylesheet" href="../../assets/css/main.css">
</head>
<body>
<div class="wrapper">
<div class="container">
<form action="" method="post" class="frm">
<h2>Sign In</h2>
<div class="form-group">
<?php if (!empty(Auth::$error[2])) echo "<span class='err'>" . Auth::$error[2] . "</span>"; ?>
</div>
<div class="form-group">
<label for="uname">Username</label>
<input type="text" name="uname" value="<?php if(!empty($_POST["uname"])) echo trim($_POST["uname"]); else { if(isset($_COOKIE["memberid"])) echo $_COOKIE["memberid"]; } ?>" id="uname" class="form-control">
<?php if (!empty(Auth::$error[0])) echo "<span class='err'>" . Auth::$error[0] . "</span>"; ?>
</div>
<div class="form-group">
<label for="upass">Password</label>
<input type="password" name="upass" value="<?php if(isset($_COOKIE["memberpassword"])) echo $_COOKIE["memberpassword"]; ?>" id="upass" class="form-control">
<?php if (!empty(Auth::$error[1])) echo "<span class='err'>" . Auth::$error[1] . "</span>"; ?>
</div>
<div class="form-group">
<input type="submit" value="signin" name="signin" class="btn">
</div>
<div class="form-group">
<div class="chkinbox flt-left">
<input type="checkbox" name="remember" class="chkbox" <?php if(isset($_COOKIE["memberid"])) echo "checked"; ?>>
<span class="checkmark"></span>
</div>
<div class="chklblbox flt-left">Remember me</div>
<a href="../signup" class="goto flt-right">New user?</a>
</div>
<div class="clear"></div>
<div class="form-group">
<input type="submit" value="Google" name="btngoogle">
</div>
</form>
</div>
</div>
</body>
</html>
startup.php файл:
session_start();
require_once "vendor/autoload.php";
SigninController.php файл:
if (isset($_POST["btngoogle"]))
{
$client = new GoogleClient();
$client->setClientId("my_client_id.apps.googleusercontent.com");
$client->setClientSecret("my_client_secret");
$client->setRedirectUri("../../signin");
$client->addScope("email");
$client->addScope("profile");
}
if (isset($_GET["code"]))
{
$client = new GoogleClient();
$token = $client->fetchAccessTokenWithAuthCode($_GET["code"]);
if (isset($token["error"]))
{
$client->setAccessToken($token["access_token"]);
$_SESSION["access_token"] = $token["access_token"];
$google_service = new Google_Service_Oauth2($client);
$data = $google_service->userinfo->get();
if (!empty($data["given_name"]) || !empty($data["family_name"]) || !empty($data["email"]) || !empty($data["gender"]) || !empty($data["picture"]))
{
if (Auth::RegisterProfile($data["given_name"], $data["family_name"], $data["email"], $data["gender"], $data["picture"]) amp;amp;
Auth::RegisterSessions($data["email"], "google"))
{
Redirect::TO("../home");
}
}
}
}
При запуске всего приведенного выше кода браузер просто загружается немного и ничего больше.
Я действительно ценю ваши предложения и советы.
Комментарии:
1. Находится ли кнопка внутри формы, или она просто существует сама по себе? Одна кнопка без формы на самом деле ничего не делает, если у вас нет на ней какого-либо события JS. Вы должны предоставить нам больше информации здесь.
2. Это внутри формы.
3. Когда вы говорите «не работает», вы имеете в виду, что при нажатии кнопки ничего не происходит, или она отправляет форму, и ничего не происходит? Пожалуйста, подробно объясните свое поведение, поскольку «не работает» — это слишком расплывчато.
4. это вторая проблема. Когда я отправляю форму, ничего не происходит.
5. Проблема уже устранена. Самое главное, я просто забыл указать createAuthUrl() в качестве перенаправления. Вот почему, когда я отправляю форму, результаты пусты, и ничего не произошло. Для тех, кто мне помогает, большое вам спасибо от всего сердца.