2016-11-15 92 views
2

在我從我的項目meteor remove autopublish, 中刪除自動發佈軟件包之前,我能夠讀取登錄用戶正在使用的oAuth服務,例如,
var facebookSignIn = Meteor.user().services.facebook;
刪除自動發佈後,如何讀取Meter.user()。服務?

var googleSignIn = Meteor.user().services.google; 

的原因,這是很重要的,因爲我會用這個googleSignInfacebookSignIn信息來確定如何保存登錄用戶的個人信息,如他們的:姓名,電子郵件和個人資料圖片。
在代碼:

var facebookSignIn = Meteor.user().services.facebook; 
var googleSignIn = Meteor.user().services.google; 
var ownderId = Meteor.user()._id; 

if (facebookSignIn) { 
     console.log("Its a Facebook Account Sign in!"); 
     var userName = Meteor.user().services.facebook.name; 
     var emailAdress = Meteor.user().services.facebook.email; 
     var facebookProfilePic = "http://graph.facebook.com/" + user.services.facebook.id + "/picture/?type=large"; 
    } 
else if (googleSignIn) { 
     console.log("Its a Google Account Sign in!"); 
     var userName = Meteor.user().services.google.name; 
     var emailAdress = Meteor.user().services.google.email; 
     var googleProfilePic = Meteor.user().services.google.picture; 

    } 
else { 
     console.log("Your not Signed in!"); 
    } 

如何取回Meteor.user().services.facebookMeteor.user().services.google現在我已經刪除了包自動發佈?

在瀏覽器控制檯(main.js:1140),出現此錯誤消息:

Uncaught TypeError: Cannot read property 'facebook' of undefined 

在main.js代碼:1140:

var facebookSignIn = Meteor.user().services.facebook; 
+2

您是否已經在服務器上發佈了Meteor.users? '''Meteor.publish(「userPublication」,函數publishFunction(){ return Meteor.users.find(); });'''' – blueren

+0

@blueren謝謝我遵循你的建議並在服務器上發佈它,它工作! – SirBT

+0

很高興知道。我只是把它作爲你的問題的答案。 – blueren

回答

1

你必須首先從服務器發佈集合,以使集合在客戶端可用(其必須訂閱已發佈的集合)

Meteor.publish("userPublication", function publishFunction(){ 
     return Meteor.users.find(); })