java - 如何在每个用户 firebase android 中创建唯一的 token ?

标签 java firebase firebase-realtime-database firebase-authentication token

我想在每次用户登录时生成并存储 token 。我尝试了下面的代码,但当我使用另一个帐户登录时,它总是生成相同的 token 。

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

请帮忙,谢谢..

最佳答案

当使用以下代码行时:

String token = FirebaseInstanceId.getInstance().getToken();

您将在客户端获取 Firebase 实例 ID token ,也称为 FCM token 。您需要知道在 Firebase 中有两种不同的 token :

  1. FCM token /实例 ID token ,用于标识特定用户设备上特定应用程序的安装。它不会以任何方式识别特定用户。

  2. 身份验证 ID token 可识别特定应用程序的特定用户。它不以任何方式识别特定设备。

这两个 token 完全不同,并且具有不同的用途。请参阅 Android 官方文档了解如何 retrieve ID tokens on clients .

用户的身份将被无限期地记住(或直到您退出为止)。但他们的凭据(或者更确切地说,他们的 token 是否仍然有效)每小时都会重新检查一次。

关于java - 如何在每个用户 firebase android 中创建唯一的 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52365309/

相关文章:

java - 将 Firebase 函数的变量声明为最终变量。检查用户名和电子邮件是否存在

java - onResponse 方法中的 Volatile 变量没有改变

java - 如何制作安装文件

ios - 通过仅覆盖某些数据 Swift 3 在 Firebase 数据库中设置值

swift - 通过使用 swift 在 firebase 中搜索键来检索值

java - 如何在登录后向不同角色的用户(学生、教师和家长)添加抽屉导航?

swift - 无法从 Firebase 加载我当前用户的帖子 - Swift

java - Apaches Ignite 不会序列化/反序列化 Guavas LoadingCache

java - JNI 和事件函数

android - 使用 Cloud Functions for Firebase 发送推送通知