0

Ionic2 rc4 및 Firebase 인증을 사용하고 있습니다. signupFirebaseUser()으로 전화하면 예상대로 uid이 기록됩니다. 그러나 loginGoogle()을 호출하면 다른 uid을 기록 할 것으로 예상되지만 동일한 uid을 인쇄합니다.Firebase 로그인 - uid를 재설정하는 방법?

이것은 사용자가 email addresspassword로 로그인 로그 아웃 한 다음 자신의 옛 uid을 유지하고 싶어하기 때문에 자신의 Google 계정 (다른 이메일 주소)를 사용하여 로그인을 다시 할 수 없음을 의미합니다.

signupFirebaseUser(email: string, password: string): firebase.Promise<any> { 
    return this.fireAuth.createUserWithEmailAndPassword(email, password).then((newUser: firebase.User) => { 
     console.log(newUser.uid); 
     this.userProfile.child(newUser.uid).set({ email: email }); 
     newUser.sendEmailVerification(); 
    }); 
} 

public logout(auth: FirebaseAuth, fireAuth: firebase.auth.Auth): Promise<any> { 
     return auth.logout().then(() => { 
      fireAuth.signOut().then(() => { 
      }); 
     }); 
} 

loginGoogle() { 
    this.auth.login({ 
     provider: AuthProviders.Google, 
     method: AuthMethods.Popup 
    }).then((data: FirebaseAuthState) => { 
     console.log(data.uid); 
    }).catch((error) => { 
     console.error('loginGoogle', error); 
    }); 
    } 

질문

어떻게 이전 uid을 잊지하기 위해 중포 기지 인증을 재설정합니까? 그래서 당신이 다시 로그인 할 때, 당신은 깨끗한 출발부터 그렇게합니다.

즉, 각 제공자 (Google, Facebook, 이메일)에 대해 새로운 uid을 생성하십시오.

도움을 주시면 감사하겠습니다.

+1

한 가지 방법은 user.delete()를 사용하여 사용자를 삭제 한 다음 다시 만들면 자동으로 새 UID가됩니다. – AndroidBeginner

+0

네, 맞습니다. 그러나 이전 사용자로 다시 로그인하려는 경우 (즉, 사용자를 계속 전환하는 경우) 어떻게됩니까? 각 사용자에 대해 데이터를 저장하기 때문에 계정을 삭제하고 싶지 않습니다. – Richard

+0

죄송합니다. 문제를 이해하지 못했습니다. Google 로그인을 위해 새로운 Firebase Auth API를 사용해보실 수 있습니까? (https://firebase.google.com/docs/auth/web/google-signin). Cordova 지원이 필요한 경우 OAuth 플러그인 (예 : https://github.com/nraboy/ng-cordova-oauth)을 사용하고 반환 된 액세스 토큰을 사용하여 signInWithCredential()을 호출 할 수 있습니다. –

답변

0

이메일 주소 당 하나의 계정 만 가질 수있는 옵션이있을 가능성이 큽니다 (올바르게 기억하면 실제로 기본값입니다). 이 옵션을 변경하려면 https://console.firebase.google.com/project/_/authentication/providers으로 이동하여 Firebase 프로젝트를 선택하고 "고급"섹션으로 스크롤 한 다음 "이메일 계정당 하나의 계정"옆의 "변경"버튼을 누릅니다. 동일한 전자 메일 주소에 대한 계정을 처리하고이 동작을 해제하는 방법을 설정할 수 있습니다.

+0

고마워,하지만 이건 나를 위해 작동하지 않습니다. 각 이메일 주소에 대해 하나의 계정 만 원하지만 동일한 이메일 또는 브라우저에서 둘 이상의 이메일 주소로 로그인 할 수 있습니다. 다른 이메일 주소가 로그인하려고하면 내 문제가 발생합니다. uid가 변경되지 않기 때문에 실패합니다. 내가 원하는 것은 전자 메일 주소와 uid (또는 계정) 간의 일대 일 매핑입니다. – Richard

+0

로그인 할 때 발생한 정확한 오류는 무엇입니까? – jwngr

+0

나는 지금 매우 혼란 스럽다. 테스트 할 때 작동하는 것 같습니다. 내가 부주의하게 고친 코드에 버그가 있었음에 틀림 없다. 시간을 낭비해서 죄송합니다. 도움에 감사드립니다. – Richard

관련 문제