当前位置: 首页 > 知识库问答 >
问题:

Firebase身份验证登录状态持久性不起作用

范福
2023-03-14

在ionic/AngularJS/Cordova IOS应用程序上。

我正在尝试使用邮件/密码设置一个持久性登录(遵循< code>Firebase文档:https://Firebase . Google . com/docs/auth/web/auth-state-persistence)。但是我不知道我的代码有什么问题。我的应用程序在登录页面启动,当用户点击“连接按钮”时,它触发登录功能。

登录正在工作,但是当我关闭应用程序(未注销)并重新启动它时,我仍然在登录页面上。登录名不是永久性的。

所以我想,一个问题,可能是持久性调用没有得到很好的定位......是吗?根据这篇文章: 火基地 3.0 会话持久性 它可能有一些与火基地.auth().onAuthState已更改(函数(用户))有关的东西,但我不知道...

// EMAIL CONNEXION TRIGGERED WHEN CONNEXION BUTTON IS HIT

$scope.loginEmail = function($email, $password){
  
  firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(function() {
    var alertPopup;
    
    function signInSuccess(response) {
  
				$state.go("menu.VN");
    }

    function signInError(response) {
    
        var errorCode = null;
        errorCode = response.code;
        if ($email === ""){
             alertPopup = $ionicPopup.alert({
                    title: 'Something wrong...',
                    cssClass: 'pop',
                    template: '<div class="center-form">Need an email address...</div>'
                });   
        }
}

return firebase.auth().signInWithEmailAndPassword($email, $password)
  .then(signInSuccess)
  .catch(signInError);

     })
     .catch(function(error) {
    // Handle persistence Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

};
<label>
          <span>Email</span>
          <input type="email" placeholder="" ng-model="data.email">
</label>

<label>
          <span>Password</span>
          <input type="password" placeholder="" ng-model="data.password">
</label>
    
<button ng-click="loginEmail(data.email, data.password )">Connexion</button>

共有1个答案

龚彬
2023-03-14

要持久化状态,应使用firebase.auth.Auth.Persistence.LOCAL而不是firebase.auth.Auth.Persistence.SESSION

CordovaiOS应用程序中的localStorage存在易失性的已知问题。Firebase Auth过去依赖localStorage,但最新版本使用更可靠的indexedDB来持久化用户状态。当这不可用时,它会回退到localStorage。在这种情况下,您可以将此Microsoft插件用于indexedDB。

太长,读不下去了当indexedDB不可用时,迁移到最新版本的Firebase Auth并使用CordovaindexedDBplugin。

 类似资料:
  • 我已经在我的xamarin Android应用程序中实现了脸书认证,一切都很好。我从facebook获得令牌,并使用firebase rest Api的sigin方法,我能够sigin到firebase,并从firebase Api收到一个访问令牌,作为JWT。但是,当我想在我的Web Api核心上使用这个访问令牌时,它总是返回not authenticated。我的Web Api核心使用下面基于

  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载

  • 本文向大家介绍firebase-authentication Google Plus登录身份验证,包括了firebase-authentication Google Plus登录身份验证的使用技巧和注意事项,需要的朋友参考一下 示例 使用Plus登录验证用户 onCreate onStart() 获取资料信息 使用Firebase进行身份验证, onActivityResult 登出      

  • 该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件:

  • 我正在开发一个Laravel身份验证系统,当注册生效时,用户会登录,并在数据库中创建条目,但登录不起任何作用。我已经包括了谷歌硬盘上压缩的Laravel项目文件夹,因此如果您设置自己的数据库,您可以直接查看服务器配置不足的任何潜在原因。注意,这个问题在我添加jquerymobile之前就存在了,所以它不是AJAX负载。 https://drive.google.com/file/d/0BzXcUh