[英]How do I get a user's email address using accounts-facebook in Meteor?
我創建了一個允許用戶使用Facebook登錄的Meteor應用程序。 為此,我使用accounts-ui和accounts-facebook軟件包。 這很好用。
如何在用戶登錄后檢索用戶的電子郵件地址? 我知道這需要特殊許可,因此我在Facebook開發者網站的應用設置中添加了email
作為“用戶和朋友的權限”。 在Meteor文檔之后,我還設置了Account.ui.config
如下所示:
Accounts.ui.config({
requestPermissions: {
facebook: ['email'],
},
passwordSignupFields: 'USERNAME_AND_EMAIL'
});
正如預期的那樣,當我的應用程序的用戶使用Facebook登錄時,它正確地要求他們共享他們的電子郵件地址。 但是我該如何檢索呢? 用戶文檔只有_id
和profile.name
。
Facebook用戶的電子郵件地址存儲在[userDocument].services.facebook.email
,該地址未發布到客戶端,但可以使用Meteor.methods
和Meteor.call
從服務器或客戶端Meteor.call
。
這會將Facebook個人資料信息添加到客戶端用戶對象。
Accounts.onCreateUser (options, user) ->
if options.profile
user.profile = options.profile
# get profile data from Facebook
result = Meteor.http.get "https://graph.facebook.com/me", {
params: access_token: user.services.facebook.accessToken}
if !result.error && result.data
#if successfully obtained facebook profile, save it off
#the user can access the profile object on the client
user.profile.facebook = result.data;
return user
在服務器端,可以訪問facebook.accesstoken ...因此使用它來獲取完整的FB信息並將其保存到客戶端用戶對象。
現在在控制台中ping一個Meteor.user()以獲取FB信息。
不要認為這是在客戶端上獲取FB信息方面的最佳做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.