Я регистрирую пользователя, использующего логин Google. Я включил все необходимые файлы, необходимые для входа в Google. Я создал скрипт PHP для входа в систему. У меня есть вся информация об аутентификации и перенаправлении. Тем не менее, я не понимаю, почему я не получаю поле электронной почты, которое я получаю от googleClient в своей сессии. Пожалуйста помоги.Как получить этот сеанс, работающий в php Google login?
Вот мой код:
<?php
$google_client_id = '#########.apps.googleusercontent.com';
$google_client_secret = 'xxxxxxxxxxxxxxxxxxx';
$google_redirect_url = 'http://localhost/project/profile.php';
$google_developer_key = '';
//include google api files
require_once '../src/Google_Client.php';
require_once '../src/contrib/Google_Oauth2Service.php';
session_start();
$gClient = new Google_Client();
$gClient->setClientId($google_client_id);
$gClient->setClientSecret($google_client_secret);
$gClient->setRedirectUri($google_redirect_url);
$google_oauthV2 = new Google_Oauth2Service($gClient);
if (isset($_REQUEST['reset']))
{
unset($_SESSION['token']);
$gClient->revokeToken();
header('Location: ' . filter_var($google_redirect_url, FILTER_SANITIZE_URL));
}
if (isset($_GET['code']))
{
$gClient->authenticate($_GET['code']);
$_SESSION['token'] = $gClient->getAccessToken();
header('Location: ' . filter_var($google_redirect_url, FILTER_SANITIZE_URL));
return;
}
if (isset($_SESSION['token']))
{
$gClient->setAccessToken($_SESSION['token']);
}
if ($gClient->getAccessToken())
{
//Get user details if user is logged in
$user = $google_oauthV2->userinfo->get();
$user_id = $user['id'];
$user_name = filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS);
$email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
$profile_url = filter_var($user['link'], FILTER_VALIDATE_URL);
$profile_image_url = filter_var($user['picture'], FILTER_VALIDATE_URL);
$personMarkup = "$email<div><img src='$profile_image_url?sz=50'></div>";
$_SESSION['token'] = $gClient->getAccessToken();
$_SESSION['email'] = $email;
}
else
{
//get google login url
$authUrl = $gClient->createAuthUrl();
}
?>
Мой profile.php выглядит так -
Это приводит - Notice: Undefined индекс: электронная почта на линии 4
После этого запускается сценарий, элемент управления переходит на следующую страницу, где говорится, что письмо не найдено в сеансе. Должен ли я создать новый Google_Client()? Каков правильный способ выполнения этой серии взаимодействий после входа в систему?
мне нужно, чтобы включить эти строки в каждой странице делать .. ?? $ gClient = новый Google_Client(); $ gClient-> setClientId ($ google_client_id); $ gClient-> setClientSecret ($ google_client_secret); $ gClient-> setRedirectUri ($ google_redirect_url); Пожалуйста, помогите кому-нибудь. – Nevermore
Вы пытаетесь выполнить аутентификацию на своем локальном сервере? – Kamal
Да Я аутентифицирую пользователя на своем локальном сервере – Nevermore