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を忘れFirebase認証をリセットするのですか?そのため、再度ログインするときれいなスタートからそうすることができます。

つまり、プロバイダ(Google、Facebook、メール)ごとに新しいuidを生成します。

助けてください。

+1

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

ほとんどの場合、メールアドレスごとに1つのアカウントしか設定できない可能性があります(正しく覚えていれば実際はデフォルトです)。このオプションを変更するにはhttps://console.firebase.google.com/project/_/authentication/providersに行き、Firebaseプロジェクトを選択して「詳細」セクションまでスクロールし、「メールアカウントごとに1アカウント」の横にある「変更」ボタンを押します。そこでは、同じ電子メールアドレスのアカウントを処理する方法を設定し、この動作をオフにすることができます。

+0

ありがとうございますが、これは私にとってはうまくいかないでしょう。私は各電子メールアドレスに対して1つのアカウントしか必要としませんが、複数の電子メールアドレスが同じデバイスまたはブラウザでサインインできるようにしたいと思います。私の問題は、別の電子メールアドレスがサインインしようとした場合です.UIDが変更されないため失敗します。私が望むのは、電子メールアドレスとuid(またはアカウント)の間の1対1のマッピングです。 – Richard

+0

サインインが発生したときの正確なエラーは何ですか? – jwngr

+0

私は今非常に混乱しています。私はそれをテストするときに働いているようだ。私は不注意に修正したコードにバグがあったに違いない。あなたの時間を無駄にして申し訳ありません。私は助けに感謝します。 – Richard

関連する問題