$ firebaseAuth在刷新后登出我(facebook)

时间:2015-03-14 08:09:08

标签: angularjs facebook angularfire firebase-security

我正在使用$ firebaseAuth来控制我的应用程序的登录部分。一切都运行良好,但现在,刷新后,我立即退出。

我路线的一部分

}).when("/login/", {

        templateUrl:"partials/login.html",
        controller:"tiki.controller.login"

}).when("/settings/profile/", {

    templateUrl:"partials/settings.profile.html",
    controller:"tiki.controller.settings.profile",
    resolve:authenticate()

})

authenticate()函数

function authenticate(){

    return {"currentAuth": ["firebaseAuth", function(firebaseAuth) {

        console.log(firebaseAuth.requireAuth())
        return firebaseAuth.requireAuth();

    }]}     

}

捕获路由更改错误的.run()块:

angular.module('tiki').run(["$rootScope", "$location", function($rootScope, $location) {

    $rootScope.$on("$routeChangeError", function(event, next, previous, error) {

        // We can catch the error thrown when the $requireAuth promise is rejected
        // and redirect the user back to the home page

        if (error === "AUTH_REQUIRED") {

            $location.path("/login/");

        }

    });

}]);

对于completness我的firebaseAuth.js服务:

'use strict';

/* Services */
angular.module("tiki").factory("firebaseAuth", ["$firebaseAuth", function($firebaseAuth){

    var ref = new Firebase("https://blistering-xxx.firebaseio.com/");

    if(ref){

        var service = $firebaseAuth(ref)

    }

    function loginFacebook(){

        return service.$authWithOAuthPopup("facebook")

    }

    function logOut(){

        service.$unauth()

    }

    function getState(){

        var state = service.$getAuth()

        if(state){

            return state

        }

    }

    function getUserName(){

        if(getState()){

            return getState().facebook.displayName

        }

    }

    function requireAuth(){

        return service.$requireAuth()

    }

    function service(){

        return service

    }

    return {

        loginFacebook:loginFacebook,
        logOut:logOut,
        getState:getState,
        getUserName,
        requireAuth:requireAuth,
        service:service

    }

}])

当我在/ settings / profile /中刷新时,我会退出并退回到/ login /。

authenticate()函数中的console.log()返回:

status: 2
value:"AUTH_REQUIRED"

这仅在所有页面上刷新时发生。如果我不刷新,那么身份验证工作正常。

有什么想法吗?

THX,

1 个答案:

答案 0 :(得分:0)

不确定是否是您的问题,但来自: https://www.firebase.com/docs/web/guide/login/facebook.html

  

可选设置

     

authWithOAuthPopup()和authWithOAuthRedirect()采用可选的第三个参数,该参数是包含以下任何设置的对象:

     

记住
  如果未指定 - 或设置为默认值 - 只要您在Login& amp;中配置,会话就会保留。 Firebase的信息中心的验证标签。要将持久性限制为当前窗口的生命周期,请将其设置为sessionOnly。 值为none根本不会保留身份验证数据,并会在页面关闭后立即结束身份验证。

我不知道页面刷新是否算作关闭页面,但是可能值得检查Login和Auth中的值,以确保它没有被设置为某些东西,我刚刚测试过它很乐意让你把它设置为0