1

我是Angular & Firebase的新用户。我目前正在开发一个Ionic应用程序。不知何故,我开始知道,要使用Firebase,我需要设置身份验证系统(我更喜欢Google)。将Firebase 2.x迁移到3.4.1 AngularJS适用于Google OAuth

将代码集成到官方Firebase网站中提到的AngularJS并不容易。因此,我只是拿起某人的工作代码并将他的Firebase数据库网址替换为我的,我可以完成它。但这是一个错误。

这是未更改的代码和他的输出(按预期工作)。

的index.html

<script src="lib/angularfire/dist/angularfire.min.js"></script> 
<script src="lib/firebase/firebase.js"></script> 

<!-- cordova script (this will be a 404 during development) --> 
<script src="cordova.js"></script> 

<!-- your app's js --> 
<script src="js/app.js"></script> 
<script src="js/controllers.js"></script> 
<script src="js/services.js"></script> 

app.js

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'firebase']) 

.constant('FirebaseUrl', 'https://ionicle.firebaseio.com/') 

.service('rootRef', ['FirebaseUrl', Firebase]) 

因此,首先,我删除了他的火力地堡URL添加矿山和得到这个错误:

We have detected that you are using the v2.x or lower authentication SDKs with a project that was created at console.firebase.google.com. You must use the 3.0.0 or greater authentication SDKs with projects that have been created in the new console.

然后我更新firebase.js文件到3.4.1版本。然后,我在浏览器的开发者控制台中有一个引用错误:的ReferenceError:火力地堡没有定义

.service('rootRef', ['FirebaseUrl', Firebase]) 

所以我最终需要的是谷歌的工作用的OAuth火力地堡3.x和AngularJS。

回答

0

虽然您没有提供足够的代码示例(依赖注入是不够的),但我认为您遇到的主要问题是您在使用新的Firebase版本时使用了旧代码示例。

事情是这样的:

var app = angular.module('app', ['firebase']); 
app.controller('Ctrl', function($scope, $firebaseAuth) { 
    var ref = new Firebase('https://...'); 
    $scope.authObj = $firebaseAuth(ref); 
    ... 
}); 

都变成这样:

var app = angular.module('app', ['firebase']); 
app.controller('Ctrl', function($scope, $firebaseAuth) { 

    var config = { 
     apiKey: "***", 
     authDomain: "***.firebaseapp.com", 
     databaseURL: "https://***.firebaseio.com", 
     storageBucket: "***.appspot.com", 
     messagingSenderId: "***" 
    }; 
    firebase.initializeApp(config); 

    $scope.authObj = $firebaseAuth(firebase.auth()); 
    ... 
}); 

然后对authObj您可以添加提供程序要使用验证客户端(谷歌/ GitHub/Facebook ...):

var provider = new firebase.auth.GoogleAuthProvider(); 
$scope.authObj.$signInWithPopup(provider).then(function(result) { 
    console.log(result); 
}); 

请记住,您必须在Firebase控制台中启用Google认证(或任何其他提供商)。有关详细说明,请检查此link

+0

它的工作,谢谢 –

+0

没问题,如果它有用,请回答答案。 –