saber - ¿Cómo obtengo la dirección de correo electrónico de un usuario usando accounts-facebook en Meteor?
correo electronico de facebook (2)
Creé una aplicación Meteor que permite a los usuarios iniciar sesión utilizando Facebook. Para hacer esto, estoy usando los paquetes accounts-ui y accounts-facebook. Esto funciona bien
¿Cómo recupero la dirección de correo electrónico del usuario una vez que se han registrado? Entiendo que esto requiere un permiso especial, por lo que agregué un email
como "Permiso de usuario y amigo" en la configuración de la aplicación en el sitio de desarrolladores de Facebook. Siguiendo la documentación de Meteor, también configuré Account.ui.config
así:
Accounts.ui.config({
requestPermissions: {
facebook: [''email''],
},
passwordSignupFields: ''USERNAME_AND_EMAIL''
});
Como era de esperar, cuando un usuario de mi aplicación inicia sesión en Facebook, correctamente les pide que compartan su dirección de correo electrónico. ¿Pero cómo lo recupero? El documento de usuario solo tiene el _id
y profile.name
.
La dirección de correo electrónico del usuario de Facebook se almacena en [userDocument].services.facebook.email
, que no se publica en el cliente, pero se puede acceder desde el servidor o desde el cliente utilizando Meteor.methods
y Meteor.call
.
esto agregará la información de perfil de Facebook al objeto de usuario del lado del cliente.
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
en el lado del servidor se puede acceder al facebook.accesstoken ... así que úselo para obtener la información FB completa y guárdela en el objeto de usuario del cliente.
hacer ping a Meteor.user () en la consola ahora para obtener la información de FB.
No creo que esto sea exactamente la mejor práctica en términos de tener información FB sobre el cliente.