Подтвердить что ты не робот

Как получить адрес электронной почты пользователя, используя учетную запись-facebook в Meteor?

Я создал приложение Meteor, которое позволяет пользователям подписываться на Facebook. Для этого я использую пакеты учетных записей ui и accounts-facebook. Это прекрасно работает.

Как получить адрес электронной почты пользователя после его подписания? Я понимаю, что для этого требуется специальное разрешение, поэтому я добавил email в качестве "Разрешение пользователя и друга" в настройках приложения на сайте разработчиков Facebook. Следуя документации Meteor, я также установил Account.ui.config следующим образом:

Accounts.ui.config({
  requestPermissions: {
    facebook: ['email'],
  },
  passwordSignupFields: 'USERNAME_AND_EMAIL'
});

Как и ожидалось, когда пользователь моего приложения подписывается на использование Facebook, он правильно просит их поделиться своим адресом электронной почты. Но как его получить? Пользовательский документ имеет только _id и profile.name.

4b9b3361

Ответ 1

Электронный адрес пользователя Facebook хранится в [userDocument].services.facebook.email, который не публикуется клиенту, но может быть доступен с сервера или с клиента с помощью Meteor.methods и Meteor.call.

Ответ 2

это добавит информацию профиля 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 the Meteor.user() в консоли, чтобы получить информацию FB.

Не думайте, что это самая лучшая практика с точки зрения наличия информации FB на клиенте.