Сегодня я обновил свою версию php с php 7
до php 7.2.10
.
У меня есть веб-сайт, написанный с использованием codeigniter
, и в какой-то части этого приложения я использую Google_Service_Oauth2
.
Сбой запроса на проверку подлинности через Google После обновления версии php с этим сообщением:
Страница не перенаправляет должным образом
Firefox обнаружил, чтосервер перенаправляет запрос на этот адрес способом, который никогда не будет завершен.
This problem can sometimes be caused by disabling or refusing to accept cookies.
Это моя функция:
function byGoogle()
{
require_once ('global/google/libraries/Google/autoload.php');
########## Google Settings.Client ID, Client Secret from https://console.developers.google.com #############
$client_id = 'my-client-id-part.apps.googleusercontent.com';
$client_secret = '_My_secret-Qx01';
$redirect_uri = 'http://codepen.ir/login/byGoogle';
########## MySql details #############
$db_username = "username"; //Database Username
$db_password = "pass"; //Database Password
$host_name = "localhost"; //Mysql Hostname
$db_name = 'dbName'; //Database Name
###################################################################
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope("email");
$client->addScope("profile");
$service = new Google_Service_Oauth2($client);
//If $_GET['code'] is empty, redirect user to google authentication page for code.
//Code is required to aquire Access Token from google
//Once we have access token, assign token to session variable
//and we can redirect user back to page and login.
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
exit;
}
//if we have access_token continue, or else get login URL for user
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
} else {
$authUrl = $client->createAuthUrl();
}
//Display user info or display login url as per the info we have.
//echo '<div style="margin:20px">';
if (isset($authUrl)){
redirect( $authUrl );
exit();
} else {
$user = $service->userinfo->get(); //get user info
$user_info = $this->md_login->getUserByMail($user->email);
if($user_info === FALSE)
{
//some DB stuff
if( $register )
{
$_SESSION['email'] = $email;
$_SESSION['login'] = TRUE;
$_SESSION['access'] = $user_type;
if( $this->session->has_userdata('referer'))
{
redirect( $this->session->userdata('referer'));
}//if referer
else
{
redirect( base_url() );
}//no referer
}
}//new user
else
{
$_SESSION['email'] = $user->email;
$_SESSION['login'] = true;
$_SESSION['access'] = $user_info['user_type'];
if( $this->session->has_userdata('referer'))
{
redirect( $this->session->userdata('referer'));
}//if referer
else
{
redirect( base_url() );
}//no referer
}
}
}//byGoogle
До этого код работал хорошоизменение версии php.
Кто-нибудь Почему это произошло?
Заранее спасибо