用户登录后如何生成令牌?

时间:2017-08-18 15:56:38

标签: firebase firebase-authentication token

我的应用要求用户注册并登录才能使用该应用。我正在使用Firebase身份验证来验证用户身份。问题是如果用户下载应用程序并且没有登录,它会收到其他用户发送的不应该发生的推送通知。用户应该只在她/她登录时才会收到与应用程序相关的通知。这是因为在应用程序下载后会立即生成并存储令牌。如果用户已登录,我该如何生成令牌? 这是我试图使用的代码,但令牌根本没有产生:

private FirebaseAuth.AuthStateListener mAuthListener;
@Override
    public void onTokenRefresh() {

        final String recent_token = FirebaseInstanceId.getInstance().getToken();
        Log.d(REG_TOKEN, recent_token);
        //databaseReference = FirebaseDatabase.getInstance().getReference().child("Blog");
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if (firebaseAuth.getCurrentUser() != null) {
                    if(recent_token!=null)
                        Log.d(REG_TOKEN, recent_token);
                    else if(recent_token==null)
                        onTokenRefresh();

                }
            }
        };



    }}

1 个答案:

答案 0 :(得分:0)

我打算对此发表评论,因为我没有开发到原生Android,所以我无法共享很多代码,但是如何将推送发送到主题而不是令牌呢?

您可以在用户登录或创建帐户后向用户订阅特定主题,并仅向订阅这些主题的人发送推送。

您可以使用

为某个主题订阅用户
FirebaseMessaging.getInstance().subscribeToTopic("your_topic_name");

因此,当发送推送时,您只会发送到your_topic_name,这样更容易,因为您不需要获取所有令牌并逐个发送(我认为您正在做的事情)。

当用户打开应用程序时,您需要再次检查并订阅他(仅为安全起见)。

您可以在此处找到有关subscribing users to topics的更多信息。

希望这有帮助。