Отключение Google OAuth, signOut, но GoogleAuth.isSignedIn.get () = true? - PullRequest
0 голосов
/ 19 марта 2019

Вот мой код:

function googleLogOut () {

debugAlert("googleLogOut:Begin");

GoogleAuth.disconnect();
GoogleAuth.signOut().then(function () {
    debugAlert("googleLogOut:Logout Completed, current login status = " + GoogleAuth.isSignedIn.get());
    userNotLoggedIn();
    debugAlert("googleLogOut:Exit");
});

}

Насколько я понимаю, отключение аннулирует авторизацию, которую подписал в настоящее времяпользователь предоставил моему приложению, и signOut должен выйти из его учетной записи Google, в основном отказавшись от входа в OAuth, который пользователь прошел изначально, чтобы получить доступ к моему приложению.

Однако немедленнопосле GoogleAuth.signOut () GoogleAuth.isSignedIn.get () оценивается как true - см. изображение диалогового окна оповещения:

Диалог оповещения

Ответы [ 3 ]

0 голосов
/ 20 марта 2019

Вот совершенно другой способ сделать это.Я обнаружил, что это намного надежнее.

logoutWindow = window.open ("https://accounts.google.com/SignOutOptions"," _blank "," панель инструментов = нет, ширина = 600, высота = 400 ");

Я просто открываю окно на страницу управления аккаунтом Google. Когда пользователь выходит из системы, они также выходят из моего приложения.

Как обледенение, когда я ловлю пользователя, вышедшего из системысобытие в моем приложении я закрываю окно - если пользователь выходит из окна через окно, которое мое приложение вызвало:

try {
    logoutWindow.close();
}
catch (err) {
    // nothing...
}
0 голосов
/ 03 июля 2019

Использовать GoogleAuth.isSignedIn.listen (слушатель) - когда вызывается ваш слушатель, состояние объектов GoogleAuth уже обновлено.

0 голосов
/ 19 марта 2019

На самом деле, как выясняется, пользователь все еще входит в свою учетную запись Google, поэтому технически isSignedIn.get () возвращает правильное значение.Я подтвердил это, открыв новую вкладку браузера и перейдя в gmail - ясно, что я все еще вошел в систему. Однако, более важно, что этот код отменяет все разрешения, которые пользователь предоставил моему приложению - в этом сутьэтой функции выхода из системы.Чтобы проверить это -

GoogleAuth.currentUser.get (). HasGrantedScopes (SCOPE) == false

Таким образом, составной тест для входа в учетную запись Google в моем приложении:

GoogleAuth.isSignedIn.get () == true && GoogleAuth.currentUser.get (). HasGrantedScopes (SCOPE) == true

Вот измененная функция выхода из системы.(Та же функциональность, только что изменили операторы отладки, чтобы показать отзыв привилегий областей.)

function googleLogOut () {

debugAlert("googleLogOut:Begin");

GoogleAuth.disconnect();
GoogleAuth.signOut().then(function () {
    debugAlert("googleLogOut:Logout Completed, current login status = " + GoogleAuth.isSignedIn.get());
    if (GoogleAuth.isSignedIn.get()) {
        debugAlert("googleLogOut:Logout Completed, current SCOPE status = " + GoogleAuth.currentUser.get().hasGrantedScopes(SCOPE));
    }
    userNotLoggedIn();
    debugAlert("googleLogOut:Exit");
});

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...