2015-09-02 53 views
0

我正在嘗試獲取Meteor用戶的Facebook ID(通過Facebook登錄)。下面的行給我的麻煩:TypeError:Meteor.user(...)。服務未定義

var userID = Meteor.user().services.facebook.id; 

在控制檯它說

TypeError: Meteor.user(...).services is undefined 

從我的理解,這是因爲用戶()的服務尚未初始化。我將代碼包裝在if(Meteor.user())中以確認用戶已被初始化。代碼在按下按鈕時執行,因此它有足夠的時間啓動。當我刪除自動發佈時(雖然這可能不相關),這開始發生。還有什麼額外的我需要做的,使其工作,而不需要自動發佈?

回答

4

用以下解決它:

Meteor.publish("getUserData", function() { 
    return Meteor.users.find({_id: this.userId}); 
}); 

,並訂閱了這一點。一旦該訂閱被填充,所有的Meteor.user.services數據都可用。

0

服務默認情況下,客戶端上的用戶文檔中不包含密鑰,因爲它包含安全性詳細信息。您可以通過方法調用來獲取它,或者從服務器專門發佈它並訂閱它。

+0

我會用什麼樣的方法調用來獲取它? – ahota

+0

創建一個返回所需密鑰的服務器方法,然後用'Meteor.call()'從客戶端調用它。 –