身份验证状态持久性未按预期工作ReactJS

时间:2018-02-21 13:52:36

标签: javascript reactjs firebase firebase-authentication

我正在使用firebase开发ReactJS应用程序,并且我的身份验证持久性未按预期工作。在开发期间,它在我的浏览器中运行良好,但是当我将其部署到firebase托管时,它不会在我的Web浏览器中保存我的身份验证状态,也不会在移动浏览器中保存。

import * as firebase from 'firebase'
export function signIn(e) { e.preventDefault(); auth.signOut()
  auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL).then(function() {
    return auth.signInWithEmailAndPassword(email, pass).then(() => { 
        .....
    }).catch(err => {
        if (err.code === 'auth/wrong-password') {... }
        else {  alert(err.message) }
    })
  })
}

我使用onAuthStateChanged让用户登录。

auth.onAuthStateChanged(() => {
        if (auth.currentUser)
            ....    
    })  

我强迫持久性为LOCAL,知道这是默认值,但即使它像session一样工作。我已经阅读了文档Auth Persistence Docs,但是持久性并没有正常工作。使用Android,iOS和Web进行测试,并且身份验证状态不会持续存在。

这是一个firebase托管问题吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,Firebase SDK 将身份验证持久性设置为“LOCAL”。 如果您在应用程序加载时使用 onAuthStateChanged,那么问题可能是 Firebase SDK 无法使用刷新令牌刷新 idToken。为了刷新令牌,SDK 使用令牌服务 API。转到 Google Cloud Platform 控制台,检查 Firebase 项目的 API 密钥是否可以访问令牌服务 API。我之前也遇到过类似的问题,问题是我对 Google Cloud 平台中的 API 密钥设置了限制。