使用 firebase authWithPassword 时定期注销

Posted

技术标签:

【中文标题】使用 firebase authWithPassword 时定期注销【英文标题】:Regularly signed out when using firebase authWithPassword 【发布时间】:2015-03-28 23:11:13 【问题描述】:

我在 ios 上有一个 phonegap 应用,使用 firebase 进行身份验证。登录是这样完成的:

  var afterLogin = function(error, authData) 
    if (error)  
      console.log(error); 
      messenger.error(error.message);
      return;
    
    $scope.loggedIn = $auth.check();
    $scope.$apply();

    $sync.sync();

    messenger.success('Logged in');
  ;

  $scope.doLogin = function() 
    mixpanel.track('login');

    if (!$scope.loginForm.email && !$scope.loginForm.password) 
      messenger.error('Enter email and password then tap login');
      return;
     else if (!$scope.loginForm.email) 
      messenger.error('Enter your email then tap login');
      return;
     else if (!$scope.loginForm.password) 
      messenger.error('Enter your password then tap login');
      return;
    

   ref.authWithPassword(
      email    : $scope.loginForm.email,
      password : $scope.loginForm.password
    , afterLogin);     
  

我这样检查用户的状态:

check: function() 
  var authData = ref.getAuth();
  if (authData) 
    mixpanel.identify(authData.uid);
    mixpanel.people.set(
      "$email": authData.password.email
    );
        
  return !!authData;

它最初运行良好,但用户在 12-24 小时未使用该应用程序后会退出并必须重新登录。也许当应用程序内存不足时?显然这很令人沮丧,不知道是什么原因造成的。会话长度设置为 24 周,仍然存在问题。

Firebase 版本:2.1.2 角度:1.3.6

使用用户名和密码进行身份验证后的localStorage日志:

注销一天后返回:

cookie 的内容(是否登录相同,其中没有 firebase 内容):

【问题讨论】:

您可以在此处添加更多详细信息,以帮助我们理解和重现该问题。上面的代码似乎不太可能是您正在使用的代码的精确复制。您没有包含任何版本信息,这肯定会产生这样的细微差别。而且您没有列出您采取的任何故障排除步骤或您排除的可能原因(例如,令牌是否已从本地存储中删除?令牌是否仍然存在?如果是这样,expires 的值是多少@987654321 @?) @Kato 我已经添加了有关该问题的更多信息 嗨,汤姆,感谢您提供更多信息。这确实描绘了一幅更好的画面。在我看来,phonegap 没有保存 cookie/存储信息。可能是因为它在内部使用 file:// 并且不允许使用 cookie?您能否检查 localStorage/cookies 以查看是否正在存储身份验证? 刚刚尝试过,无法重现。我们能够存储这些,并且会话正在保持。 @kato 我已经添加了 cookie 的日志。那里似乎与firebase没有任何关系。 【参考方案1】:

它是 Firebase 中的一个参数。

转到 Firebase 的仪表板。 点击“登录和验证”。

然后在第一段中,有一个输入并选择会话长度。您可以选择所需的小时数/周数等。

【讨论】:

以上是关于使用 firebase authWithPassword 时定期注销的主要内容,如果未能解决你的问题,请参考以下文章

React:使用 firebase-ui 设置 firebase 身份验证

如何在 firebase-functions 中使用 firebase.auth()?

在 Swift Playground 中导入使用 Firebase 的框架(“缺少必需的模块 'Firebase'”)

在一个移动应用中使用来自不同 Firebase 项目的两个 Firebase 服务

使用 Firebase 函数获取上传到 Firebase 存储的 pdf 的签名下载 URL

Firebase:使用预留托管 URL 时未创建 Firebase 应用“[DEFAULT]”