Выйти из Google после выхода из Firebase - PullRequest
0 голосов
/ 13 мая 2018

Я использую аутентификацию Firebase с аккаунтами Google. Процесс входа в систему работает нормально, но у меня проблема с выходом из системы. Я успешно вышел из Firebase, но не из Google. Это означает, что пользователь остается в Google. Как я могу выйти из них обоих?

Это мой код:

function auth() {   
    // Initialize Firebase;
    firebase.initializeApp(settings);
    var provider = new firebase.auth.GoogleAuthProvider();

    firebase.auth().signInWithPopup(provider).then(function(result) {
        // This gives you a Google Access Token. You can use it to access the Google API.
        var token = result.credential.accessToken;
        sessionStorage.setItem('tokenK', token);
        // The signed-in user info.
        var user = result.user;
        var tempName = user.displayName.split(" ");
        var fullName = tempName[0].charAt(0).toUpperCase() + tempName[0].toLowerCase().substring(1, tempName[0].length) + 
        " " + tempName[1].charAt(0).toUpperCase() +tempName[1].toLowerCase().substring(1, tempName[1].length);
        sessionStorage.setItem('displayName', fullName);
        sessionStorage.setItem('userName', user.email);
    }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        console.log(error);
    });
}

И

function logOut(){  
    firebase.initializeApp(settings);
    var dataJ = JSON.stringify(sessionStorage.getItem('userName'));
    var xhttp = new XMLHttpRequest();

    firebase.auth().signOut().then(function() {
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 204) {
                sessionStorage.removeItem('tokenK');
                sessionStorage.removeItem('displayName');
                sessionStorage.removeItem('userName');
                sessionStorage.removeItem('role');
                sessionStorage.removeItem('school');
                sessionStorage.removeItem('grade');
                window.open('index.html', '_self');                 
            }                   
        };
        xhttp.open("POST", settings.protocol + "://" + settings.host + ":" + settings.port + "/api/Login/SignOut", true);
        xhttp.setRequestHeader("Content-Type", "application/json");
        xhttp.setRequestHeader("Token", sessionStorage.getItem('tokenK'));  
        xhttp.send(dataJ);
    }).catch(function(error) {
        console.log(error);
    }); 
}

Я видел этот пост, говоря о похожей проблеме на Android, но не могу найти что-нибудь для JS.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

mGoogleSignInClient.signOut (). AddOnCompleteListener (ClassName.this, новый OnCompleteListener () { @Override public void onComplete (задача задачи @NonNull) { Toast.makeText (ClassName.this, «вышел из системы», Toast.LENGTH_SHORT) .show (); } });

0 голосов
/ 14 мая 2018

Обычно это ожидаемое поведение.Выход из Firebase не имеет отношения к выходу из Google.Пользователь должен будет явно выйти из Google.Однако, если вы знаете, что ваше приложение будет использоваться на общем устройстве, вы можете сделать следующее:

// Sign out from firebase.
firebase.auth().signOut().then(function() {
  // Redirect to google sign out.
  window.location.assign('https://accounts.google.com/logout');
}).catch(function(error) {
  // Error occurred.
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...