![](/img/trans.png)
[英]Firebase Android Authentication failed: expired_token (Auth token is expired)
[英]Firebase token always expired
在具有自定义ROM的一种型号的所有平板电脑上,我都获得了Firebase令牌,将其发送到服务器,但始终过期。 有什么问题吗? 通过以下方式在打开应用程序时获取它:
FirebaseInstanceId.getInstance().getToken();
和onTokenRefreshed:
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
Globals.getInstance().Token = refreshedToken;
SaveToken();
}
在其他设备上,一切正常。
运行该方法时,您的应用似乎更新了fcm令牌。 使用以下方法。 即使清除应用程序数据,它也不会导致fcm令牌过期。 仅卸载并重新安装该应用程序以强制生成新令牌。
FcmInstanceIdService.java
public class FcmInstanceIdService extends FirebaseInstanceIdService{
@Override
public void onTokenRefresh(){
String recent_token = FirebaseInstanceId.getInstance().getToken();
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(getString(R.string.FCM_Token),recent_token);
editor.commit();
}
}
AndroidManifest.xml
<service android:name=".FcmInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
strings.xml
<string name="FCM_PREF">com.example.YourAccountName.AppName.fcm_pref</string>
<string name="FCM_Token">com.example.YourAccountName.AppName.fcm_token</string>
YourActivityName.java
sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
final String token = sharedPreferences.getString(getString(R.string.FCM_Token), "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.