2015-02-16 6 views
1

Я не смог показать свое имя пользователя Google или изображение профиля. Это то, что я до сих пор ...Получение информации о пользователях Google после входа в систему (Meteor)

Accounts.onCreateUser(function(options, user){ 
    if (options.profile) { 
     options.profile.picture = "https://www.googleapis.com/plus/v1/people/" + user.services.google.id; 
     user.profile = user.services.google.picture; 
    } 
    return user; 
}); 

и я показываю это в моем шаблоне профиля

  {{#if currentUser}} 
       <img scr="{{currentUser.profile.picture}}" alt="{{currentUser.username}}"> 
      {{/if}} 

Я не уверен, что, кажется, проблема. Что делать, если я хочу получить больше информации от пользователя, такого как пол и т. Д.?

Это то, что происходит, когда вы набираете Meteor.user() в консоли

Object 
_id: "BoH9pAN8G7Xj2cWkT" 
profile: Object 
name: "redacted" 
__proto__: Object 
__defineGetter__: function __defineGetter__() { 
__defineSetter__: function __defineSetter__() { 
__lookupGetter__: function __lookupGetter__() { 
__lookupSetter__: function __lookupSetter__() { 
constructor: function Object() { 
get __proto__: function() { 
hasOwnProperty: function hasOwnProperty() { 
isPrototypeOf: function isPrototypeOf() { 
propertyIsEnumerable: function propertyIsEnumerable() { 
set __proto__: function() { 
toLocaleString: function toLocaleString() { 
toString: function toString() { 
valueOf: function valueOf() { 
__proto__: Object 
__defineGetter__: function __defineGetter__() { 
__defineSetter__: function __defineSetter__() { 
__lookupGetter__: function __lookupGetter__() { 
length: 1 
name: "__lookupGetter__" 
__proto__: function() { 
__lookupSetter__: function __lookupSetter__() { 
constructor: function Object() { 
get __proto__: function() { 
hasOwnProperty: function hasOwnProperty() { 
isPrototypeOf: function isPrototypeOf() { 
propertyIsEnumerable: function propertyIsEnumerable() { 
set __proto__: function() { 
toLocaleString: function toLocaleString() { 
toString: function toString() { 
valueOf: function valueOf() { 
+0

Может быть, попробовать ' user.profile.picture = user.services.google.picture; ' – Sindis

+0

К сожалению, это не сработало. – Viji123

ответ

0

У меня была такая же проблема, после того, как проверка подлинности с помощью Google (с пакетом счета-Google), я хотел бы получить более подробную информацию о пользователе, особенно изображение профиля.

Печально:

Meteor.startup(function() { 
    console.log(Meteor.user()); 
}); 

в клиенте JS выведет меня тот же результат, чем у тебя, я не мог получить доступ ни к чему, но

{{currentUser.profile.name}} 

Я подключен к базе данных с Robomongo и посмотрел для таблицы «users». Удивительно, но все поля, полученные от Google, были здесь.

enter image description here

Я подумал, что, может быть, клиент не имел доступа ко всем из этих полей по умолчанию. Поэтому я добавил публикацию в файле js сервера, чтобы получить все текущие пользовательские данные. Затем запустил клиентский файл js для публикации.

Сервер JS:

Meteor.publish("userData", function() { 
    return Meteor.users.find({_id: this.userId}); 
}); 

Клиент JS:

Meteor.subscribe("userData"); 

Тогда я был в состоянии получить все поля необходимо

Клиент HTML:

{{currentUser.services.google.id}} 
{{currentUser.services.google.email}} 
{{currentUser.services.google.picture}}