programing

Firebase 3.0에서 사용자를 로그아웃하려면 어떻게 해야 합니까?

linuxpc 2023. 6. 10. 08:30
반응형

Firebase 3.0에서 사용자를 로그아웃하려면 어떻게 해야 합니까?

설명서에 따르면 사용자가 이 방법으로 로그아웃하도록 강제합니다.signOut().

이것이 제가 시도한 것입니다.

var rootRef = firebase.database().ref();
var loggedInUser = firebase.auth();

1. firebase.signOut(); 
2. loggedInUser.signOut(); 
3. rootRef.signOut();
4. signOut();
5. firebase.auth.signOut();

알겠습니다... is not a function위의 다섯 가지 중 한 가지에 대해.새로운 파이어베이스에 대한 제 언급에 문제가 없다는 것을 알고 있습니다.firebase.database().ref();그리고.firebase.auth();오류를 발생시키지 않습니다.콘솔에서 앱을 마이그레이션하기도 했습니다.

JavaScript에서 다음을 사용하여 사용자를 로그아웃할 수 있습니다.

firebase.auth().signOut().then(function() {
  console.log('Signed Out');
}, function(error) {
  console.error('Sign Out Error', error);
});
firebase.auth().signOut()

단순히 그것은 나에게 효과가 있습니다!

사용자를 로그아웃하는 몇 가지 방법이 있습니다.

파이어베이스UI: 참조

종속성 추가:

dependencies {
    implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
}

그러면:

public void onClick(View v) {
if (v.getId() == R.id.sign_out) {
    AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            public void onComplete(@NonNull Task<Void> task) {
                // user is now signed out
                startActivity(new Intent(MyActivity.this, SignInActivity.class));
                finish();
            }
        });
    }
}

코틀린: 참조

Android 기본 인증 종속성 사용(예: com.google.firebase:firebase-auth:16.0.1

firebase.auth().signOut().then(function() {
  // Sign-out successful.
}).catch(function(error) {
  // An error happened.
});

Java를 사용한 기본값:

Android 기본 인증 종속성 사용(예: com.google.firebase:firebase-auth:16.0.1

FirebaseUser user = mAuth.getCurrentUser();
if (user != null){
    mAuth.signOut();
    Toast.makeText(this, user.getEmail()+ " Sign out!", Toast.LENGTH_SHORT).show();
}else{
    Toast.makeText(this, "You aren't login Yet!", Toast.LENGTH_SHORT).show();
}

@Frank van Puffelen의 답변을 확장하여, 이 코드는 매력적으로 작동하지만 내부에서 거부 처리를 약속합니다.then()두 번째 매개 변수로 기능하는 것은 잘못된 관행입니다.

차라리 a를 추가합니다..catch(e)블록으로 막다

왜냐하면, 만약에 오류가 발생한다면,signout()그러면 기능이 처리되지만 오류가 발생할 경우.then()차단하면 처리되지 않습니다.

더 나은 코드는,

firebase.auth().signOut()
.then(() => {
  console.log('Signed Out');
})
.catch(e=>{
 console.error('Sign Out Error', e);
});

최신 화력 기지를 위해 이것을 시도해 볼 수 있습니다.제 각진 방화벽 기반 인증에 사용할 수 있습니다.

async logout() {
 await signOut(this.auth);
 localStorage.removeItem("user");
}

내가 제대로 이해했는지는 모르겠지만 로그인한 모든 사용자를 로그아웃하려면 다음과 같이 하십시오.코드가 클라이언트에서 실행 중이고 인증 상태가 이를 실행 중인 클라이언트를 가리키기 때문에 그럴 수 없습니다.

파이어베이스 인증 서비스에 연결된 모든 클라이언트에 액세스할 수는 없습니다. 이는 서버 측에서 코드를 실행하는 것을 의미하기 때문입니다.

그러나 세션 기간을 지정하는 옵션이 있는데, 이는 인증 섹션의 기억 매개 변수입니다.

언급URL : https://stackoverflow.com/questions/37376708/how-do-i-sign-out-users-in-firebase-3-0

반응형