2014-05-19 34 views
1

我正在使用AngularJS和Firebase構建網頁。我想使用Facebook登錄與用戶連接網頁上的信息。 Firebase有一個簡單登錄版本,我猜應該簡化登錄過程。 我的問題是,我想訪問我的網頁上很多地方登錄用戶的信息,但我找不到一個好辦法。如何使用firebase簡單登錄facebook來處理用戶信息

這是我開始了:

var userInfo = null; 

var ref = new Firebase('https://<yourfirebase>.firebaseIO.com/'); 

var auth = new FirebaseSimpleLogin(ref, function(error, user) { 
if(error) 
    alert("You are not logged in"); 
else if(user) 
{ 
    //store userinfo in variable 
    userInfo = user; 
} 
else 
    //user logged out 
}); 

//do something with userInfo 
alert(userInfo.name); 

我首先想到的是我的頁面的頂部運行這個,然後使用有關用戶的信息。問題在於,使用userInfo的代碼(例如警報)將始終在userInfo變量填充之前運行,並且userInfo將返回undefined/null。

然後,當我想要檢索用戶數據時,我總是創建一個新的firebasesimplelogin對象。當然不是很好。特別是因爲每當創建FirebaseSimpleLogin對象時,無論何時調用另一個對象或用戶註銷,都會再次調用該對象。

所以我的問題是,我如何使用FirebaseSimpleLogin以最好的方式處理和使用我的用戶信息?

我會喜歡一些函數getUserInfo()或檢查isLoggedIn()爲例。你如何正確地做到這一點?

回答

2

你可以看看thinkter的這個例子。它基於使用用戶名/密碼進行簡單登錄。 http://www.thinkster.io/angularjs/4DYrJRxTyT/7-creating-your-own-user-data-using-firebase

您可以創建一個像getLoggedinUser這樣的函數,它運行在$ rootScope中,可以讓您在整個應用程序中查找用戶。

UPDATE:

圍繞2014年10月中旬,火力做一些大的變化。這種方法可能仍然有效,但最好利用新版本的firebase,特別是getauth和onauth。這些方法將允許您在不運行rootScope的情況下執行相同的操作。 https://www.firebase.com/docs/web/guide/user-auth.html#section-login

+0

謝謝!我得到它的工作與教程的幫助和一些調整:) –

+0

Ablin,我跟着教程,以及它如何使用電子郵件和密碼的用戶,但你真的可以調整它的Facebook用戶?如果是這樣,你能說明一下嗎?我一直在努力弄清楚,我只是還沒有運氣。 –

2

請恆定在你的應用程序在任何地方使用它像

.constant('facebookUrl', 'https://rjrestaurantapp.firebaseio.com'); 

然後在控制器中,如下圖所示注入這個常數「facebookUrl &‘$狀態’......

.controller('loginCtrl', function($scope,facebookUrl,$state){ 

然後你只需要給出你想在facebook身份驗證後重定向的狀態的名稱。

var ref = new Firebase(facebookUrl); 
$scope.fbLogin = function() { 
ref.authWithOAuthPopup("facebook", function(error, authData) { 
    if (error) { 
     console.log("Login Failed!", error); 
    } else { 
     console.log("Authenticated successfully with payload:", authData); 
     $state.go('restaurant'); 
    } 
}) 
}}) 

您可以使用Facebook的看到全成認證後的authData對象的信息....

請仔細閱讀本文檔仔細https://www.firebase.com/docs/web/guide/login/facebook.html

以上是使用火力簡單的登錄和檢索數據的例子每個登錄用戶,您必須在登錄時存儲用戶信息,因爲您知道Firebase使每個孩子都擁有唯一的ID。那麼您只需使用Firebase的脫機功能即可找到哪個用戶處於脫機狀態,並根據該脫機功能刪除具有相同ID的節點(脫機狀態),您可以在下面的鏈接中找到示例。 。

https://www.firebase.com/docs/web/guide/offline-capabilities.html

相關問題