Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Google OAuth将Firebase 2.x迁移到3.4.1 AngularJS_Angularjs_Ionic Framework_Firebase_Google Oauth_Firebase Authentication - Fatal编程技术网

为Google OAuth将Firebase 2.x迁移到3.4.1 AngularJS

为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

我是Angular&Firebase的新手。我目前正在开发一款Ionic应用程序。不知怎的,我知道,要使用Firebase,我需要设置身份验证系统(我更喜欢谷歌)

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

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

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>
因此,首先,我删除了他的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);
});