Я пытаюсь настроить систему аутентификации входа в Google с использованием PHP, который отправляет свои данные в базу данных MySQL. Я дошел до того, что сделал файлы и поместил их все в свой каталог C:\xampp\htdocs, но это то, что происходит, когда я открываю http://локальный/логин.php
Предупреждение: require_once(googleapi/vendor/autoload.php): не удалось открыть поток: нет такого файла или каталога в C:\xampp\htdocs\config.php в строке 3
Неустранимая ошибка: require_once(): не удалось открыть требуемый 'googleapi/vendor/autoload.php' (include_path='C:\xampp\php\PEAR') в C:\xampp\htdocs\config.php в строке 3.
Вот все мои коды
//login.php file
<?php
require_once "config.php";
if (isset($_SESSION['access_token'])) {
header('Location: index.php');
exit();
}
$loginURL = $gClient->createAuthUrl();
?>
<!doctype html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport"
content = "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0,">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>Login</title>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity = "sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin = "anonymous">
</head>
<body>
<div class = "container" style = "margin-top: 100px">
<div class = "row justify-content-center">
<div class = "col-md-6 col-offset-2" align = "center">
<form>
<input type = "text" placeholder = "Email" name = "email" class = "form-control"><br>
<input type = "password" placeholder = "Password" name = "password" class = "form-control"><br>
<input type = "button" onclick = "window.location = '<?php echo $loginURL ?>';" name = "google" value = "Login with Google" class = "btn btn-primary">
<input type = "reset" name = "submit" value = "Clear" class = "btn btn-primary">
</form>
</div>
</div>
</div>
</body>
</html>
//config.php file
<?php
session_start();
require_once "googleapi/vendor/autoload.php";
$gClient = new Google_Client();
$gClient->setClientId("<removed>");
$gClient->setClientSecret("<removed>");
$gClient->setApplicationName("capstoneproject");
$gClient->setRedirectUri("http://localhost/login/g-callback.php");
$gClient->addScope("https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email");
$con = new mysqli('localhost', 'root','' ,'table');
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
?>
//index.php file
<?php
session_start();
if (!isset($_SESSION['access_token'])) {
header('Location: login.php');
exit();
}
?>
<!doctype html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport"
content = "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>Login With Google</title>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity = "sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin = "anonymous">
</head>
<body>
<div class = "container" style = "margin-top: 100px">
<div class = "row">
<div class = "col-md-3">
<img style = "width: 80%;" src = "<?php echo $_SESSION['picture'] ?>">
</div>
<div class = "col-md-9">
<table class = "table table-hover table-bordered">
<tbody>
<tr>
<td>ID</td>
<td><?php echo $_SESSION['id'] ?></td>
</tr>
<tr>
<td>First Name</td>
<td><?php echo $_SESSION['givenName'] ?></td>
</tr>
<tr>
<td>Last Name</td>
<td><?php echo $_SESSION['familyName'] ?></td>
</tr>
<tr>
<td>Email</td>
<td><?php echo $_SESSION['email'] ?></td>
</tr>
<tr>
<td>Gender</td>
<td><?php echo $_SESSION['gender'] ?></td>
</tr>
<tr>
<td>Logout</td>
<td><a href = "logout.php">Logout</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
//g-callback.php
<?php
require_once "config.php";
if (isset($_SESSION['access_token']))
$gClient->setAccessToken($_SESSION['access_token']);
else if (isset($_GET['code'])) {
$token = $gClient->fetchAccessTokenWithAuthCode($_GET['code']);
$_SESSION['access_token'] = $token;
} else {
header('Location: login.php');
exit();
}
$oAuth = new Google_Service_Oauth2($gClient);
$userData = $oAuth->userinfo_v2_me->get();
$_SESSION['id'] = $userData['id'];
$_SESSION['email'] = $userData['email'];
$_SESSION['gender'] = $userData['gender'];
$_SESSION['picture'] = $userData['picture'];
$_SESSION['familyName'] = $userData['familyName'];
$_SESSION['givenName'] = $userData['givenName'];
$sql = "insert into google_users (clint_id,name,last_name,google_email,gender,picture_link) values
('".$userData['id']."','".$userData['givenName']."','".$userData['familyName']."','".$userData['email']."',
'".$userData['gender']."','".$userData['picture']."')";
mysqli_query($con,$sql);
header('Location: index.php');
exit();
?>
Ваш include_path не включает . (текущий рабочий каталог). Добавляйте к путям префикс __DIR__, например require_once __DIR__ . '/googleapi/vendor/autoload.php';. При этом require_once "config.php" также должен потерпеть неудачу, но, похоже, это не так.
Я сделал это со всеми своими файлами и теперь получаю эту ошибку: Предупреждение: require_once (C:\xampp\htdocsconfig.php): не удалось открыть поток: нет такого файла или каталога в C:\xampp\htdocs\login.php в строке 2 Неустранимая ошибка: require_once(): Не удалось открыть требуемый «C:\xampp\htdocsconfig.php» (include_path='C:\xampp\php\PEAR') в C:\xampp\htdocs\login.php в строке 2






Вы уверены, что
login.phpнаходится на том же уровне папки, что и папкаgoogleapi?