Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 身份验证状态持久性未按预期工作_Javascript_Reactjs_Firebase_Firebase Authentication - Fatal编程技术网

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

Javascript 身份验证状态持久性未按预期工作,javascript,reactjs,firebase,firebase-authentication,Javascript,Reactjs,Firebase,Firebase Authentication,我正在用firebase开发一个ReactJS应用程序,但我的auth持久性没有按预期工作。在开发过程中,它在我的浏览器中运行良好,但当我将其部署到firebase主机时,它不会在我的web浏览器和移动浏览器中保存我的身份验证状态 import * as firebase from 'firebase' export function signIn(e) { e.preventDefault(); auth.signOut() auth.setPersistence(firebase.aut

我正在用firebase开发一个ReactJS应用程序,但我的auth持久性没有按预期工作。在开发过程中,它在我的浏览器中运行良好,但当我将其部署到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
,知道这是默认设置,但即使它像
会话一样工作。我已经阅读了文档,但是持久性没有像它应该的那样工作。经过Android、iOS和Web测试,身份验证状态不会持续


这是firebase托管问题吗?

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

我正在使用身份验证状态更改来让用户登录。这不是问题也许这有帮助: