我想在每次用户登录时生成和存储令牌。我尝试了下面的代码,但是当我使用另一个帐户登录时,它总是生成相同的令牌。mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { AlertDialog.dismiss(); if (!task.isSuccessful()) { if (password.length() < 6) { new SweetAlertDialog(LoginActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("Oops...") .setContentText("Enter minimum 6 charachters !! ") .show(); } else { passwordInput.setText(""); new SweetAlertDialog(LoginActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("Oops...") .setContentText("Authentication failed !!") .show(); } } else { Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); FirebaseUser users = FirebaseAuth.getInstance().getCurrentUser(); DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users/"+ users.getUid()); String token = FirebaseInstanceId.getInstance().getToken(); Log.e("tokenid",""+token); mDatabase.child("token_id").setValue(token); finish(); } } }); } });请帮忙,谢谢。。
3 回答

慕田峪9158850
TA贡献1794条经验 获得超7个赞
使用以下代码行时:
String token = FirebaseInstanceId.getInstance().getToken();
您将FCM token
在客户端获取 Firebase 实例 ID 令牌,也称为。您需要知道在 Firebase 中有两种不同的令牌:
FCM 令牌/实例 ID 令牌,用于标识特定用户设备上特定应用程序的安装。它不会以任何方式识别特定用户。
Auth ID 令牌标识特定应用程序的特定用户。它不会以任何方式识别特定设备。
这两个令牌完全不同,用于不同的目的。
用户的身份将被无限期地记住(或直到您退出)。但是他们的凭据(或者更确切地说,他们的令牌是否仍然有效)每小时都会重新检查一次。

白猪掌柜的
TA贡献1893条经验 获得超10个赞
FCM 会为客户端应用程序实例生成一个注册令牌,因此您可能会为应用程序中的不同用户获得相同的令牌。您可以使用 forceRefresh 每次生成新令牌。每次用户登录到任何设备时注册新令牌并将其保存在数据库中并在新登录时使用新令牌更新,这样每次登录时每个用户都会有一个新令牌(如果这符合您的要求)
添加回答
举报
0/150
提交
取消