0
我有以下登錄代碼:認證使用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; }
在我的谷歌/配置.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'; }
基本上,在我嘗試登錄我問谷歌認證。我將它傳遞給一個測試用戶,然後重定向回到我的Web應用程序:但是,儘管最初加載了令牌,但在應用程序完全加載並且我無法登錄時會丟棄該令牌。嘗試再次登錄僅僅是重做了Google身份驗證而沒有成功。
我在做什麼錯?
編輯:我得到它的工作。上面的代碼是正確的。在模式更改之後,我的某個字段出現了拼寫錯誤。我將留下問題的細節,希望代碼可以幫助別人。
您可能想要自己的問題來標記爲答案,而不是寫入已解決的標題。乾杯' –
感謝您的提醒。我會盡快接受它。 – user991710