私のfirebaseダッシュボードでは、multiple accounts for one email
オプションを設定しました。複数のアカウントプロバイダとメールを一致させるAndroid Firebase
私はアプリケーションで簡単な電子メール、Facebook、およびGoogle Plus認証を持っています。私は私のLoginActivityで、このようにそれらのそれぞれを扱う
:
グーグルプラス:
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
dialog.dismiss();
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
proceed();
} else {
// If sign in fails, display a message to the user.
Toast.makeText(LoginActivity.this, task.getException().getMessage(),
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
のFacebook:
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
dialog.show();
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
dialog.dismiss();
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
proceed();
} else {
Toast.makeText(LoginActivity.this, task.getException().getMessage(),
Toast.LENGTH_SHORT).show();
}
}
});
}
シンプルなEメール:
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
dialog.dismiss();
proceed();
} else {
Toast.makeText(LoginActivity.this, "Wrong email or password", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}
});
FacebookとGoogle Plusで同じ電子メールを持っているユーザーに、FacebookとGoogle Plusのどちらも許可できるようにしたいと考えています。
このthis documentationドキュメントは、私がFirebaseAuth.signInWith
メソッドをスキップして、これらの関数を呼び出す必要があることを述べている:
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
mAuth.getCurrentUser().linkWithCredential(credential)
は今混乱があります。 signInWithメソッドをスキップしたため、getCurrentUserがnullのときにどのように呼び出すことができますか?
ドキュメントには、私が理解していない部分をマージすることも記載されています。
currentUser = auth.signInWithCredential(credential).await().getUser();
また、signInWithCredenialはawait
メソッドを持っていません。
これは、Logining後に複数のアカウントを同じメールにリンクする必要があることを意味しますか?