0

firebaseSimpleLogin の firebase で AngularJS を使用しています。少し前までは動いていたのに、突然動かなくなりました。ログイン部分は正常に機能しますが、新しいユーザーはサインアップできません。

var userAuthRef = new Firebase(URL+"/userAuth");
$scope.loginObj = $firebaseSimpleLogin(userAuthRef);

$scope.userSignup = function(){
        $('.signup.small.modal').modal('hide');
        if ($scope.Password!="" && angular.equals($scope.PasswordFirst, $scope.PasswordConfirm)){
            console.log($scope.Email + $scope.PasswordConfirm);  ////the first log
            $scope.loginObj.$createUser($scope.Email,$scope.PasswordConfirm)
            .then(function(auth) {
                console.log("reached here");   ////the second log
                if (auth === null) {
                    console.log("Error creating user:", error);
                } else {
                    console.log("User created successfully");
                    $scope.loginObj.$login("password", {
                        email: $scope.Email,
                        password: $scope.PasswordConfirm
                    }).then(function(user) {
                        console.log("Logged in as: ", user.uid);
                        userRef = $firebase(new Firebase(someURL+user.uid));
                        userRef.$set({username: $scope.Username, time: Date(), reported: 0});
                        $scope.user = userRef.$asObject();
                    }, function(error) {
                        console.error("Login failed: ", error);
                    });
                }
            }), function(error){
                console.error("signup failed: ", error);
                ////Sign up failure log
            };
        }
        else{
            console.log("condition does not satisfy");
        }
    };

最初の console.log が何かを出力したので、関数 userSignup() が呼び出されたと確信しています。次に、コンソールが何も提供しないため、 $createUser が実行されたかどうかさえわかりません。

Firebase forge のルールは次のとおりです。

{
  "rules": {
    ".read": true,
    "$user": {
        ".write": true
    }
  }
}

$createUser の使い方は間違っていますか??

4

1 に答える 1

1

FirebaseSimpleLogin が標準の firebase ライブラリの一部になったため、この問題が発生したと思います。ここを参照してください。非推奨です: https://www.firebase.com/docs/web/api/firebasesimplelogin/

これからは、 https ://www.firebase.com/docs/web/api/firebase/createUser.html で説明されているように API を使用します。

認証に関するデータを含むオブジェクトが引き続き必要な場合は、.getAuth() を使用します: https://www.firebase.com/docs/web/api/firebase/getAuth.html

以下のコードを試してください。

var userAuthRef = new Firebase(URL);
$scope.userSignup = function() {
    if ($scope.Password != "" && angular.equals($scope.PasswordFirst, $scope.PasswordConfirm)) {
        $('.signup.small.modal').modal('hide');
        console.log($scope.Email + $scope.PasswordConfirm); ////the first log
        firebaseRef.createUser({
            email: $scope.Email,
            password: $scope.PasswordConfirm
        }, function(err) {
            console.log("reached here"); ////the second log
            if (err) {
                switch (err.code) {
                    case 'EMAIL_TAKEN':
                        console.log("Error creating user, email taken:", error);
                    case 'INVALID_EMAIL':
                        console.log("Error creating user, invalid email:", error);
                    case
                    default:
                        console.log("Error creating user:", error);
                }
            } else {
                // User account created successfully!
                console.log("User created successfully");
                dataRef.authWithPassword({
                    "email": $scope.Email,
                    "password": $scope.PasswordConfirm
                }, function(error, authData) {
                    if (error) {
                        console.log('Login Failed!', error);
                    } else {
                        console.log('Authenticated successfully with payload:', authData);
                        console.log("Logged in as: ", authData.uid);
                        var userRef = $firebase(new Firebase(someURL + authData.uid));
                        userRef.$set({
                            username: $scope.Username,
                            time: Date(),
                            reported: 0
                        });
                        $scope.user = userRef.$asObject();
                    }
                });
            }
        });
    }
}
于 2014-10-30T10:35:09.033 に答える