首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用户在成功登录后没有保持登录状态吗?

用户在成功登录后没有保持登录状态吗?
EN

Stack Overflow用户
提问于 2018-03-07 10:25:52
回答 1查看 199关注 0票数 0

我正在将Firebase的google身份验证集成到我的React应用程序中,并且遇到了一个问题:用户成功登录,但当页面刷新时,他不再登录。

我有一个文件Firebase.js,其中包含我所有的firebase功能:

代码语言:javascript
运行
复制
if (!firebase.apps.length) {
    fb = firebase.initializeApp(config);
} else {
    fb = firebase.apps[0];
}

module.exports = {
    app: fb,
    db: fb.database(),
    auth: fb.auth,
    isUserSignedIn: () => {
        var user = fb.auth.currentUser;
        if (user) {
            return true;
        } else {
            return false;
        }
    },
    signIn: () => {
        var provider = new firebase.auth.GoogleAuthProvider();
        fb.auth().signInWithPopup(provider).then(function(result) {
            console.log("Signed in using Google.");
        }).catch(function(error) {
            console.log("Error occured with sign in.");
            location.reload();
        });
    },
}

我的应用程序成功加载了谷歌登录弹出窗口,并在控制台"Signed in using Google."中收到消息

但是,在我检查用户是否已登录的React组件中,当页面刷新时,它会显示用户尚未登录:

代码语言:javascript
运行
复制
import fb from '../../../Firebase';

if (typeof window !== 'undefined') {
    const container = document.getElementById('navBar');
    let isSignedIn = fb.isUserSignedIn();
    console.log("Signed in: " + isSignedIn);
    ReactDOM.render(<UserLink props={{signedIn: isSignedIn }} />, container);
}

我检查了firebase的身份验证控制台,知道用户已经通过了身份验证,但由于某些原因,我的应用程序没有注意到这一点。

有人能帮我看看我哪里做错了吗?

EN

Stack Overflow用户

发布于 2018-03-07 10:33:57

使用auth state change callback来获取登录状态,而不是依赖于代码在页面加载时开始运行时是否立即可用。An example is in the documentation

代码语言:javascript
运行
复制
firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // User is signed out.
    // ...
  }
});
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49143129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档