为Google OAuth将Firebase 2.x迁移到3.4.1 AngularJS
我是Angular&Firebase的新手。我目前正在开发一款Ionic应用程序。不知怎的,我知道,要使用Firebase,我需要设置身份验证系统(我更喜欢谷歌) 将代码集成到Firebase官方网站中提到的AngularJS中并不容易。所以我只是拿起某人的工作代码,将他的Firebase数据库URL替换为我的,我就能完成它。但这是一个错误 这是未更改的代码和他的输出(按预期工作) index.html为Google OAuth将Firebase 2.x迁移到3.4.1 AngularJS,angularjs,ionic-framework,firebase,google-oauth,firebase-authentication,Angularjs,Ionic Framework,Firebase,Google Oauth,Firebase Authentication,我是Angular&Firebase的新手。我目前正在开发一款Ionic应用程序。不知怎的,我知道,要使用Firebase,我需要设置身份验证系统(我更喜欢谷歌) 将代码集成到Firebase官方网站中提到的AngularJS中并不容易。所以我只是拿起某人的工作代码,将他的Firebase数据库URL替换为我的,我就能完成它。但这是一个错误 这是未更改的代码和他的输出(按预期工作) index.html <script src="lib/angularfire/dist/angularfi
<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>
因此,首先,我删除了他的Firebase URL以添加我的,并出现以下错误:
我们检测到您正在将v2.x或更低版本的身份验证SDK用于在console.firebase.google.com上创建的项目。必须将3.0.0或更高版本的身份验证SDK用于在新控制台中创建的项目
然后我将firebase.js
文件更新为3.4.1版本。然后,我在浏览器的开发控制台中发现了一个引用错误:ReferenceError:Firebase未定义
.service('rootRef', ['FirebaseUrl', Firebase])
因此,我最终需要的是一个使用Firebase 3.x和AngularJS的Google OAuth。虽然您没有提供足够的代码示例(依赖项注入是不够的),但我认为您遇到的主要问题是您在新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上,您可以为要用于身份验证的客户端添加一个提供者(Google/GitHub/Facebook…):
请记住,您必须在Firebase控制台中启用与Google(或任何其他提供商)的身份验证。有关详细说明,请检查此项。没问题,如果答案有用,请投票支持。
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());
...
});
var provider = new firebase.auth.GoogleAuthProvider();
$scope.authObj.$signInWithPopup(provider).then(function(result) {
console.log(result);
});