刷新令牌时如何发送到服务器?

Posted

技术标签:

【中文标题】刷新令牌时如何发送到服务器?【英文标题】:How to send to server when refresh token? 【发布时间】:2018-12-20 06:15:02 【问题描述】:

刷新令牌时如何检查这个条件然后发送到服务器?

    App 删除实例 ID

    应用在新设备上恢复

    用户卸载/重新安装应用

    用户清除应用数据

这是我发送服务器的代码。但它是否在应用登录时一直发送?以上情况如何发送?

@Override
public void onNewToken(String s) 
    super.onNewToken(s);
    Log.e("NEW_TOKEN", s);
    sendRegistrationToServer(s);


private void sendRegistrationToServer(String token) 
    APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
    Call<Fcm> call = apiInterface.postFCMToken(user_id, newToken);
    call.enqueue(new Callback<Fcm>() 
        @Override
        public void onResponse(Call<Fcm> call, Response<Fcm> response) 

        

        @Override
        public void onFailure(Call<Fcm> call, Throwable t) 

        
    );


【问题讨论】:

onNewToken() 只被调用一次。当前的代码很好,IMO。那不应该一次又一次地向服务器发送令牌。 @Shashanth 刷新令牌时如何再次发送? 令牌刷新时onNewToken() 将在内部触发。如果您想手动获取当前令牌,请使用 Firebase 的 Github 项目中的 this 代码。 【参考方案1】:

通常,您应该预期应用安装无法可靠地检测到 FCM 令牌何时发生更改。因此,任何新令牌都应无条件地报告给后端,作为给定用户消息传递的潜在目标。

在尝试向不再有效的令牌发送消息时,您的应用的服务器端可以通过查看错误响应来移除无效令牌。如果您将 Admin SDK 用于send a message to a device token,那么您可以检测到令牌何时无效,因为 API 将生成错误 messaging/registration-token-not-registered,according to the documentation。

【讨论】:

以上是关于刷新令牌时如何发送到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何通过 Google 登录 API 获取刷新令牌?

如何在客户端(vue.js)实现自动刷新?

处理 FCM 设备组的刷新令牌

AngularJS - 处理刷新令牌?

如何在jwt中过期时刷新令牌

页面刷新时 JWT Token 已从标题中删除,如何修复?