У меня есть следующий код входа:Аутентификация с помощью Google_Oauth2Service API
JS Вход контроллера:
token = window.localStorage.getItem("token"); Ext.php.Users.login(token, function(n) { if (Ext.isString(n)) window.location = n; else if (n != null) { app.user = user; r.add({ id: 0, email: t.email, password: t.password, roles: user.Roles, defaultrole: user.DefaultRole }); e.loadMainView("userHome"); } });
функция PHP Логин:
public function login($token) { $client = new Google_Client(); $oauth2 = new Google_Oauth2Service($client); if (!empty($token)) { $token = base64_decode($token); $client->setAccessToken($token); if (!$client->isAccessTokenExpired()) { $user = $oauth2->userinfo->get(); $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL); $u = $this->getByEmail($email); if ($u != null) return $u; } $this->logout($token); } $authUrl = $client->createAuthUrl(); return $authUrl; }
В моей Google/конфигурации .php файл:
... 'oauth2_redirect_uri' => getLoginCallBackUrl(), ...
Эта функция, в том же файле:
function getLoginCallBackUrl() { $pageURL = 'http'; //if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return substr($pageURL,0,strpos($pageURL,'/api/') + 5) .'login_callback.php'; }
В принципе, после того, как я пытаюсь войти в систему я попросил Google Authentication. Я передаю его тестовому пользователю, и я перенаправляюсь обратно к своему веб-приложению: но токен, хотя и первоначально загружен, отбрасывается при полной загрузке приложения, и я не могу войти в систему. Повторное повторное подключение просто отменяет проверку подлинности Google без успеха ,
Что я делаю неправильно?
EDIT: Я получил его на работу. Правильный код. После изменения схемы у меня была опечатка с одним из моих полей. Я оставлю вопрос с деталями в надежде, что код может кому-то помочь.
Возможно, вы захотите ответить на свой вопрос, чтобы указать на него как на ответ, а не на запись разрешения в заголовок. Cheers ' –
Спасибо за напоминание. Я приму это, как только смогу. – user991710