我使用<div class="wrapper">
<div class="clip-text clip-text_background">
EARLY BIRD DISCOUNT
</div>
</div>
和com.google.gms:google-services:3.0.0
遇到Android Firebase Auth的问题。
使用Firebase(Google或Facebook)进行身份验证后1小时,我收到以下错误:
com.google.firebase:firebase-auth:9.0.1
为什么Firebase令牌会在1小时后过期,以及如何延长此有效期?
更新
我仍然遇到此问题,Firebase令牌在1小时后过期。现在我收到以下消息:
W/PersistentConnection: pc_0 - Authentication failed: expired_token (Auth token is expired)
我感谢任何帮助。
答案 0 :(得分:3)
如果我们使用默认的Auth提供商(Google,Facebook,Email ..),在firebase控制台中更新应用程序的“SHA-1密钥”将解决令牌过期问题。
在此discussion中,Google开发人员分享了解决此问题的指南。
指南:https://drive.google.com/file/d/0B94LePkXiqa6SXVFd3N1NzJHX1E/view
答案 1 :(得分:0)
尝试实施FirebaseInstanceIdService
以获取刷新令牌。
访问注册令牌:
您可以通过扩展FirebaseInstanceIdService来访问令牌的值。确保您已将服务添加到manifest,然后在getToken
的上下文中调用onTokenRefresh
,并按如下所示记录值:
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// TODO: Implement this method to send any registration to your app's servers.
sendRegistrationToServer(refreshedToken);
}
每当生成新令牌时都会触发 onTokenRefreshcallback ,所以 在其上下文中调用
getToken
可确保您访问 当前可用的注册令牌。FirebaseInstanceID.getToken()
如果尚未生成令牌,则返回null。
<强>代码:强>
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// TODO: Implement this method to send any registration to your app's servers.
sendRegistrationToServer(refreshedToken);
}
// [END refresh_token]
/**
* Persist token to third-party servers.
*
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
我希望它会帮助你。
答案 2 :(得分:0)
Firebase令牌的新的最长续航时间为1小时 - 我今天早些时候在文档中阅读了它。
至于无效的声明&#39; kid&#39;在auth标题。,我在Google上获得了2个搜索结果(:Firebase文档中没有与 kid 相关的文档。我想我们将不得不等待来自Google的答案(或如果可能,请切换回旧版本的Firebase。
答案 3 :(得分:0)
检查最后一个用户是否为空或已过期
let array = [
[1, 1, 1, 1],
[1, 0, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 1]
];
function addPadding(arr, fill) {
arr = arr.map(a => fill + a.join("") + fill);
const pad = fill.repeat(arr[0].length);
arr.unshift(pad);
arr.push(pad);
arr = arr.map(a => a.split("").map(n => +n));
return arr;
}
console.table(addPadding(array, "0"));