firebase認証とfirebaseデータベースを使用していますが、私はfbとgoogleでログインするすべての新規ユーザーを登録したいと思います。これは私がログインするために使用するコードです:facebookとgoogle経由のログイン
FBログイン
// [START auth_with_facebook]
private void handleFacebookAccessToken(AccessToken token) {
Log.d(TAG, "handleFacebookAccessToken:" + token);
// [START_EXCLUDE silent]
showProgressDialog();
// [END_EXCLUDE]
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.w(TAG, "signInWithCredential", task.getException());
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// [START_EXCLUDE]
hideProgressDialog();
// [END_EXCLUDE]
}
});
}
// [END auth_with_facebook]
グーグル
// [START auth_with_google]
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
// [START_EXCLUDE silent]
showProgressDialog();
// [END_EXCLUDE]
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
if (!task.isSuccessful()) {
Log.w(TAG, "signInWithCredential", task.getException());
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// [START_EXCLUDE]
hideProgressDialog();
// [END_EXCLUDE]
}
});
}
// [END auth_with_google]
これらすべてのコードは、私のmainActivityであるので、私はまた、認証リスナーを作成します。
// [START auth_state_listener]
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in,
// I WANT TO CHECK AND REGISTER NEW USER HERE
Intent home = new Intent(MainActivity.this , HomeActivity.class);
startActivity(home);
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// [START_EXCLUDE]
updateUI(user);
// [END_EXCLUDE]
}
};
私はまだあなたが既に登録されているかどうかを確認する方法がわからない、多分何かのように、前に登録された電子メールを意味するので、私はユーザーの電子メールを持っているノードがあるかどうかを確認します。まだ登録されていない場合は、その後、私は例えば、プッシュ呼び出すことができます。
String userId = mDatabase.push().getKey();
mDatabase.child(userId).setValue(Newuser);
各ユーザーが一意のユーザー名または電子メールアドレスを持つようにするには、username/emailからデータベースのuidへのマッピングを格納します。 http://stackoverflow.com/questions/35243492/firebase-android-make-username-uniqueおよびhttp://stackoverflow.com/questions/25294478/how-do-you-prevent-duplicate-user-properties-inを参照してください。 - firebase –