Как создать уникальный токен, у каждого пользователя firebase android? - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу генерировать и хранить токен каждый раз, когда пользователь входит в систему. Я попытался использовать приведенный ниже код, но он всегда генерирует один и тот же токен при входе в систему с другой учетной записью.

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 ]

0 голосов
/ 17 сентября 2018

При использовании следующей строки кода:

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

Вы получаете токен идентификатора экземпляра Firebase, который также известен как FCM token, на стороне клиента.Вы должны знать, что в Firebase есть два разных токена:

  1. Токен FCM / идентификатор экземпляра, который идентифицирует установку определенного приложения на определенном пользовательском устройстве.Он никоим образом не идентифицирует конкретного пользователя.

  2. Токен Auth ID идентифицирует конкретного пользователя определенного приложения.Он никоим образом не идентифицирует конкретное устройство.

Два токена совершенно разные и служат разным целям.Пожалуйста, ознакомьтесь с официальной документацией для Android относительно того, как получить идентификационные токены на клиентах .

Личность пользователя запоминается на неопределенный срок (или до тех пор, пока вы не выйдете из системы).Но их учетные данные (точнее, действительный ли их токен) проверяются каждый час.

0 голосов
/ 17 сентября 2018

FCM генерирует регистрационный токен для экземпляра клиентского приложения, поэтому может случиться, что вы получите один и тот же токен для разных пользователей в вашем приложении.Вы можете использовать forceRefresh для создания нового токена каждый раз.Регистрируйте новый токен при каждом входе пользователя в систему на любое устройство, сохраняйте его в БД и обновляйте новым токеном при новом входе в систему, таким образом у вас будет новый токен для каждого пользователя при каждом входе в систему (если это соответствует вашим требованиям)

Вот хороший ответ, чтобы понять, как это работает Firebase FCM заставляет onTokenRefresh () вызываться

0 голосов
/ 17 сентября 2018

Использование UUID.randomUUID().toString()

Вы можете прочитать больше здесь .

Java документы - и здесь =)

...