2016-07-12 87 views
3

當用戶在我的android應用程序中註冊firebase時,會生成一個FirebaseUser對象,並從中檢索用戶令牌,以將其作爲每個用戶的唯一標識符保存在我的Google雲端點後端中。爲什麼Firebase用戶令牌更改?

我使用一個auth狀態偵聽器,其被調用時用戶註冊:

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(); 
      } 
     } 
}; 

場mUserId然後被用於配置文件保存到谷歌數據存儲區:

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(); 
} 

當我在兩個活動中記錄兩個mUserId字段時,我發現它們是不同的。

爲什麼mUserId正在改變,我如何從我的應用程序的任何位置檢索當前用戶的標記相同

回答

4

令牌實際上是一個唯一的ID來標識用戶連接。所以每次連接重新啓動時,都會生成另一個令牌。如果你想爲每個用戶使用一個唯一的標識符,你應該得到它的uid。就像這樣:

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 –