Аутентификация с использованием 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 / 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. Я передаю его для тестового пользователя, и меня перенаправляют обратно в мое веб-приложение: но токен, хотя он изначально загружен, сбрасывается при полной загрузке приложения, и я не могу войти в систему. Попытка войти снова просто возвращает аутентификацию Google без успеха ,

Что я делаю неправильно?

РЕДАКТИРОВАТЬЯ получил это на работу. Код выше верен. У меня была опечатка с одним из моих полей после изменения схемы. Я оставлю вопрос с деталями в надежде, что код может кому-нибудь где-нибудь помочь.

0

Решение

Как я уже писал в редактировании, приведенный выше код на самом деле правильный (хотя здесь немного кода JS для входа в систему контроллера). Проблема заключалась в опечатке поля после изменения схемы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]