Я следовал краткому руководству по настройке базового веб-сайта на PHP для использования Google Identity Toolkit. Виджет на странице index.php отображает кнопку «Войти». При нажатии меня перенаправляют на страницу gitkit.php и предлагают ввести мой адрес электронной почты. После этого я попал на сайт Google, чтобы ввести свой пароль. После этого я перенаправляюсь обратно на свой веб-сайт, но виджет по-прежнему показывает «логин», и страница index.php не распознает, что я вошел в систему. В процессе входа в систему не отображаются сообщения об ошибках. Потратил немало времени, пытаясь диагностировать, но никуда не деться. Надеюсь, кто-то может указать мне в правильном направлении.
Я настроил файл hosts на своем компьютере так, чтобы он указывал briansfakedomainname.com на веб-сервер, доступный в моей локальной сети.
Моя страница index.php:
<!DOCTYPE html>
<html>
<head>
<!-- 1: Load the Google Identity Toolkit helpers -->
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ .'/identity-toolkit-php-master/vendor/google/apiclient/src');
require_once __DIR__ . '/identity-toolkit-php-master/vendor/autoload.php';
$gitkitClient = Gitkit_Client::createFromFile(dirname(__FILE__) . '/identity-toolkit-php-master/gitkit-server-config.json');
$gitkitUser = $gitkitClient->getUserInRequest();
?>
<!-- End modification 1 -->
<!-- 1: Configure the sign-in button -->
<script type="text/javascript" src="//www.gstatic.com/authtoolkit/js/gitkit.js"></script>
<link type=text/css rel=stylesheet href="//www.gstatic.com/authtoolkit/css/gitkit.css" />
<script type=text/javascript>
window.google.identitytoolkit.signInButton(
'#navbar', // accepts any CSS selector
{
widgetUrl: "/gitkit.php",
signOutUrl: "/index.php",
cookiePolicy: "single_host_origin",
}
);
</script>
<!-- End modification 1 -->
</head>
<body>
<!-- 2: Include the sign in button widget with the matching 'navbar' id -->
<div id="navbar"></div>
<!-- End modification 2 -->
<!-- 2: Print the user information if a signed in user is present -->
<p>
<?php if ($gitkitUser) { ?>
Welcome back!<br><br>
Email: <?= $gitkitUser->getEmail() ?><br>
Id: <?= $gitkitUser->getUserId() ?><br>
Name: <?= $gitkitUser->getDisplayName() ?><br>
Identity provider: <?= $gitkitUser->getProviderId() ?><br>
<?php } else { ?>
You are not logged in yet.
<?php } ?>
</p>
<!-- End modification 2 -->
</body>
</html>
Эй, Брайан, вы установили свой URL виджета gitkit.php в консоли разработчика? После входа в систему через Google вы должны быть перенаправлены на URL виджета, который завершает процесс входа, а затем при успешном перенаправлении переходит на URL входа в систему. Это происходит без проблем. Также убедитесь, что виджет и URL для входа в систему имеют одинаковое доменное имя, так как вы используете политику cookie с одним источником хоста.
Других решений пока нет …