2016-07-12 3 views
3

ユーザーがアンドロイドアプリでfirebaseにサインアップすると、FirebaseUserオブジェクトが生成され、これから私はGoogleクラウドエンドポイントバックエンドの各ユーザーの一意の識別子として保存するユーザートークンを取得します。firebaseユーザートークンが変更されるのはなぜですか?

は、私が呼ばれている認証状態リスナーを使用するときにユーザーがサインアップ:

フィールドmUserIdは、Googleのデータストアにプロファイルを保存するために使用される
mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       mUserId = user.getToken(true).toString(); 
       SignUpAboutFragment signUpAboutFragment = new SignUpAboutFragment(); 
       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       ft.replace(R.id.sign_up_fragment_container, signUpAboutFragment, SIGN_UP_ABOUT_FRAGMENT_TAG); 
       ft.addToBackStack(null); 
       ft.commit(); 
      } 
     } 
}; 

:で

mPresenter.saveUserData(firstName, lastName, birthday, mUserId, this, MainActivity.class); 

私は、現在のユーザートークンを使用して、エンドポイントapiへの呼び出しを行いたいと考えています。

//Different activity to the above. 
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
if (user != null) { 
    // Using getToken as recommended in the firebase docs. 
    mUserId = user.getToken(true).toString(); 
} 

2つのアクティビティに両方のmUserIdフィールドを記録すると、それらが異なることがわかります。

なぜmUserIdが変更されていますか?同じのトークンを私のアプリのどこからでも取得するにはどうすればよいですか?

答えて

4

トークンは、実際には、ユーザー接続を識別する一意のIDです。したがって、接続が再開されるたびに、別のトークンが生成されます。各ユーザーに固有の識別子を使用する場合は、そのユーザーIDを取得する必要があります。このように:

mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       mUserId = user.getUid(); 
       SignUpAboutFragment signUpAboutFragment = new SignUpAboutFragment(); 
       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       ft.replace(R.id.sign_up_fragment_container, signUpAboutFragment, SIGN_UP_ABOUT_FRAGMENT_TAG); 
       ft.addToBackStack(null); 
       ft.commit(); 
      } 
     } 
}; 

同じあなたの他の活動に起こる:

//Different activity to the above. 
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
if (user != null) { 
    // Using getUid() which stays constant 
    mUserId = user.getUid(); 
} 
+0

だから、uidが一定で? @Rosario Pereira Fernandes –

+0

はい、それは@TomFinetです –

関連する問題