servicio - identificador de publicacion facebook
¿Cómo consultar una imagen de usuario de Facebook a través de las cuentas de Meteor-facebook? (2)
Estoy tratando de obtener la imagen de perfil del usuario de Facebook autenticado, para usar dentro de una aplicación Meteor. He intentado lo siguiente
Meteor.publish("facebook_avatar_url", function() {
return Meteor.users.find({_id: this.userId}, {fields: {
''services.facebook.id'': 1,
''services.facebook.name'': 1,
''services.facebook.gender'': 1,
''services.facebook.picture'': 1,
''services.facebook.picture.data'': 1,
''services.facebook.picture.data.url'': 1
}});
});
y solo devuelve la identificación, el nombre y el sexo. Esto parece ser lo que quiero, y la solución recomendada. El único problema es que no se devuelven datos con respecto a la imagen del usuario.
Intenté agregar lo siguiente a server / server.js, a sugerencia de otras publicaciones, pero a) no parece ser el enfoque recomendado, yb) no parece estar haciendo nada. Por lo tanto, parece ser un callejón sin salida, pero alguien parece pensar que se puede utilizar para cargar la imagen del perfil.
var getFbPicture;
Accounts.loginServiceConfiguration.remove({
service: "facebook"
});
Accounts.onCreateUser(function(options, user) {
if (options.profile) {
options.profile.picture = getFbPicture(user.services.facebook.accessToken);
user.profile = options.profile;
}
return user;
});
getFbPicture = function(accessToken) {
var result;
result = Meteor.http.get("https://graph.facebook.com/me", {
params: {
access_token: accessToken,
fields: ''picture''
}
});
if (result.error) {
throw result.error;
}
return result.data.picture.data.url;
};
Entonces, estoy inseguro de qué dirección tomar en este punto. ¿Es esto algo que necesita permisos establecidos en la API Graph de Facebook? ¿O en la aplicación de Facebook? ¿Tengo la sintaxis incorrecta en la función de publicación? ¿Debo volver a visitar la función onCreateUser?
Use esto en su lugar, no necesita un token de acceso ni nada especial para obtener su foto de perfil , solo su id de usuario de Facebook.
Accounts.onCreateUser(function(options, user) {
if (options.profile) {
options.profile.picture = "http://graph.facebook.com/" + user.services.facebook.id + "/picture/?type=large";
user.profile = options.profile;
}
return user;
});
si quieres obtener una imagen para facebook
Accounts.onCreateUser(function(options, user) {
if (typeof(user.services.facebook) != "undefined") {
user.services.facebook.picture = "http://graph.facebook.com/" + user.services.facebook.id + "/picture/?type=large";
}
return user;
});
puedes agregar esta función de ayuda
UI.registerHelper("getImageUser", function (userId) {
var user= Meteor.users.findOne(userId);
if (user.services)
{
if (user.services.facebook)
return user.services.facebook.picture;
if (user.services.twitter)
return user.services.twitter.profile_image_url;
if (user.services.google)
return user.services.google.picture;
}
else
{
return "images/withOutPhoto.png";
}
});
en tu html
<img src="{{getImageUser this._id}}" alt="...">