簡體   English   中英

如何使用Meteor中的accounts-facebook獲取用戶的電子郵件地址?

[英]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登錄時,它正確地要求他們共享他們的電子郵件地址。 但是我該如何檢索呢? 用戶文檔只有_idprofile.name

Facebook用戶的電子郵件地址存儲在[userDocument].services.facebook.email ,該地址未發布到客戶端,但可以使用Meteor.methodsMeteor.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM