我正嘗試在我的AngularJS Web應用程序中使用FireBase後端來設置基於重定向的OAuth流的AngularFire登錄。 我使用的是AngularJS 1.3.14,Firebase 2.2.3和AngularFire 1.0.0。
我試圖建立一個基本的例子,以獲得最簡單的方法身份驗證完成後,以下AngularFire庫文檔:https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-users-and-authentication
我完成了谷歌應用驗證設置,如下所述:https://www.firebase.com/docs/web/guide/login/google.html
在我控制器我做:
var ref = new Firebase("https://xxxxxxx.firebaseio.com");
$scope.authObj = $firebaseAuth(ref);
然後下面的例程綁定到我的界面中的「登錄」按鈕。
$scope.authObj.$authWithOAuthRedirect("google");
雖然我點擊我的「登錄」按鈕後,我重定向到谷歌,在那裏我可以授權我的應用程序,我可以用我的帳號登錄。然後我重定向到我的應用程序,但我看到這個錯誤在JavaScript瀏覽器(Chrome)控制檯:
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.3.14/$rootScope/infdig?p0=10&p1=%5B%5D
at REGEX_STRING_REGEXP (angular.js:63)
at Scope.$get.Scope.$digest (angular.js:14281)
at Scope.$get.Scope.$apply (angular.js:14506)
at bootstrapApply (angular.js:1448)
at Object.invoke (angular.js:4185)
at doBootstrap (angular.js:1446)
at bootstrap (angular.js:1466)
at angularInit (angular.js:1360)
at angular.js:26176
at HTMLDocument.trigger (angular.js:2744)
我想不通爲什麼出現這種情況,怎麼解決。它看起來像在AngularJS引導時發生某種循環。
如果我改變我的$scope.authObj.$authWithOAuthRedirect("google");
與$authWithOAuthPopup
電話線(見下面的確切的代碼),一切工作正常:
$scope.authObj.$authWithOAuthPopup("google")
.then(function(authData) {
$log.info("Logged in as:", authData.uid);
}).catch(function(error) {
$log.info("Authentication failed:", error);
});
有了這個代碼綁定到我的「登錄」按鈕,彈出窗口,讓我用Google登錄,然後我可以在控制檯中閱讀預期的認證信息:Logged in as: google:[undisclosed-21-digit-number]
。
任何幫助更好地理解AngularFire auth庫將不勝感激。 預先感謝您。
如果我在Chrome for iOS上嘗試snipplet表單Firebase文檔https://www.firebase.com/docs/web/guide/user-auth.html#section-popups(我不支持彈出窗口)無限循環,如下所述:http://stackoverflow.com/questions/27927200/firebase-google-oauth-infinite-redirects。但在我的情況下,我沒有無限的重定向,因爲我將auth綁定到視圖按鈕。目前我正在處理一個AngularJS摘要循環。 – Mettiu