3

我正嘗試在我的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庫將不勝感激。 預先感謝您。

+0

如果我在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

回答

1

我想出了一個解決方案/解決方法。其實,我認爲來自angularfire庫的調用做了一些我無法理解的事情。我嘗試使用「vanilla」Firebase庫(具有相同的應用程序結構),並且一切正常。 爲了使它工作,我遵循他們的文檔在這裏的指令:https://www.firebase.com/docs/web/guide/user-auth.html#section-loginref.authWithOAuthRedirect("<provider>", authHandler);按預期工作,沒有重定向,也沒有摘要循環。

我還在想爲什麼AngularFire lib不起作用,但我解決了這個問題。

希望這會有所幫助。