【发布时间】:2015-04-17 06:27:57
【问题描述】:
我有以下登录代码:
-
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/config.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 身份验证。我将它传递给测试用户,然后我被重定向回我的 Web 应用程序:但令牌虽然最初已加载,但在应用程序完全加载时被丢弃,我无法登录。尝试再次登录只是重做谷歌身份验证而没有成功.
我做错了什么?
编辑:我让它工作了。上面的代码是正确的。架构更改后,我的一个字段出现错字。我将把问题留下细节,希望代码可以在某个地方对某人有所帮助。
【问题讨论】:
-
您可能想要回答您自己的问题以将其标记为已回答,而不是在标题中写入 SOLVED。干杯'
-
感谢您的提醒。我会尽快接受。