铸造firebaseId令牌异常缓慢

时间:2019-06-12 21:22:31

标签: firebase react-native firebase-authentication

对于经过身份验证的API调用,我每次都会生成firebaseId令牌,如下面的代码所示。但这有时会花费2-3秒的时间来铸造令牌,这会增加缓慢的用户体验。是否有任何变通办法,可能是将令牌存储得更长或更长时间?我缺少明显的东西吗?

谢谢!

async fetchFromAPIAuthenticatedTimeout(url, params) {
    this.fetchStampA = (new Date()).getTime()
    try {
        const token = await firebase.auth().currentUser.getIdToken(true)
        this.fetchStampB = (new Date()).getTime()
        const response = await fetch(url,params)
        if (response.status != 200) {
            throw Error("api-error");
        }
        var json = null;
        try {
            json = await response.json();
        } catch (error) {
            throw Error("api-error")
        }
        this.fetchStampD = (new Date()).getTime()
        console.log(">> token",this.fetchStampB-this.fetchStampA)
        console.log(">> fetch",this.fetchStampC-this.fetchStampB)
        return json.result
    }
    catch (error)
    {
        throw Error(error.message)
    }
}

// Prints:
// >> token 2198
// >> fetch 319

1 个答案:

答案 0 :(得分:0)

对于reference doc,getIdToken()将在令牌过期后自动刷新。因此,无需在每个呼叫上强制刷新。删除此选项将防止往返并显着加快请求的速度,并使您摆脱配额问题-在应用扩展时会遇到该问题。

更新:此极端情况是固定的。现在,令牌会在过期之前刷新一小段时间。因此,在此用例中无需使用强制刷新。。请注意,在某些情况下,如果您在到期前几秒钟发送请求并且存在延迟,则服务器可能不会调用verifyIdToken ()到期之前。因此,您可能想要实现重试逻辑或检查到期时间(请参阅IdTokenResult#expirationTime),如果它非常接近时间戳,则强制刷新。但是肯定不是在每个请求上。