2017-01-08 10 views
0

私は匿名認証を実装しようとしており、次にsaycデータ用のGoogle認証を実装しようとしています。ここで Androidアプリケーションの匿名認証フロー?

は、匿名認証

mAuthListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       user = firebaseAuth.getCurrentUser(); 
       if (user != null) { 
        // User is signed in 
        userNameText.setText(user.getDisplayName()); 
        Picasso.with(MainActivity.this).load(user.getPhotoUrl()).into(profileImageView); 
        Log.d(TAG, "onAuthStateChanged: " + user.getDisplayName()); 
       } else { 
        // User is signed out 
        Log.d(TAG, "onAuthStateChanged: user is null"); 
        mAuth.signInAnonymously() 
          .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() { 
           @Override 
           public void onComplete(@NonNull Task<AuthResult> task) { 
            Log.d(TAG, "signInAnonymously:onComplete:" + task.isSuccessful()); 

            // If sign in fails, display a message to the user. If sign in succeeds 
            // the auth state listener will be notified and logic to handle the 
            // signed in user can be handled in the listener. 
            if (!task.isSuccessful()) { 
             Log.d(TAG, "signInAnonymously", task.getException()); 
             Toast.makeText(MainActivity.this, "Authentication failed.", 
               Toast.LENGTH_SHORT).show(); 
            } 

            // ... 
           } 
          }); 
       } 
      } 
     }; 

ためのコードであり、その後、ユーザーがGoogleアカウント

予想通り、これが実行さ
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
     mAuth.getCurrentUser().linkWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         Log.d(TAG, "linkWithCredential:onComplete:" + task.isSuccessful()); 

         // If sign in fails, display a message to the user. If sign in succeeds 
         // the auth state listener will be notified and logic to handle the 
         // signed in user can be handled in the listener. 
         if (!task.isSuccessful()) { 
          task.getException().printStackTrace(); 
          Toast.makeText(MainActivity.this, "Authentication failed.", 
            Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 

を使用してサインインを選ぶことができます。しかし、私はuser.getDisplayNameも、アプリケーションの再起動後に取得されていません。 firebaseコンソールには、匿名アカウントにリンクされているユーザーが表示されます。 また、同じユーザーがアプリを再インストールしたときに、新しい匿名ユーザーが作成されますが、今度はユーザーが以前と同じGoogleアカウントを選択しても、コンソールの既存のユーザーにはリンクされません。喜んで助けてください。

答えて

0

あなたの問題はrecently addressed on firebase-talkでした(「firebase anonymous authentication app reinstall」のseachで見つかりました)。

匿名認証アカウントは、アプリのアンインストールでも存続しません。アプリをアンインストールすると、そのアカウントを識別する匿名認証トークンを含め、ローカルに保存したすべてのものが削除されます。エンドユーザーのトークンを簡単に再利用する方法はありません。代わりに、エンドユーザーがサポートされているアカウントプロバイダに完全にログインし、データを失うことなくすべてのデバイスからログインできるようにする必要があります。

+0

このリンクをお寄せいただきありがとうございます。再インストール後(ユーザーが同じ認証プロバイダを使用してサインインした後に)、以前にサインインしたアカウントにどのように接続しますか? – KiDa

+0

私は混乱しています。これはあなたが上で尋ねた質問のようには聞こえません。これはほぼ完全に匿名認証に関するものです。あなたが知りたいことが反映されるように質問を書き直せますか?たぶん、非常に具体的な一連のステップを与えて、意味をなさない行動を引き起こしますか? –

関連する問題