2016-04-27 2 views
0

У меня была система входа в систему с google Api, но у меня возникли проблемы с отображением картинки и имени пользователя. Это мой код. Пожалуйста, помогите мне.Метеор: логин с Google (как профиль пользователя профиля?)

// js 
if (Meteor.isClient){ 
    Meteor.subscribe ('user'); 


Template.body.helpers({ 
    firstName: function(){ 
    var user = Meteor.user(); 
    if (user) { 
     return user.services.google.given_name;  
    } 
    }, 

    profileURL: function() { 
    var user = Meteor.user(); 
    if (user) { 
     return user.services.google.picture; 
    } 
} 
}); 



    //server 
Meteor.publish("user", function() { 
    return Meteor.users.find({_id: this.userId}, 
          {fields: {'other': 1, 'things': 1}}); 
}); 

ответ

0

Вы можете сохранить значения с помощью Accounts.onCreateUser и сохранить необходимую информацию.

//in server 
Accounts.onCreateUser(function(options,user){ 
    if (typeof(user.services.google) != "undefined") { 
     user.email = user.services.google.email; 
     user.profilePicture = user.services.google.picture; 
     user.username = user.services.google.name; 
    } 
    return user; 
}); 

Тогда вы можете вернуть эти поля, используя {{}}.

{{currentUser.username}} // returns email of the current user 

Кроме того, для определения маршрутов необходима маршрутизация. Проверка iron:router и flow:router

0

Вы должны добавить нужные значения в пользовательский документ в коллекции.

Этот код создает объект пользователя с общими значениями из входа услуг для meteor.loginwith [facebook, Google, твиттер]. Затем добавляет его в коллекцию монго для пользователей.

Теперь все эти данные будут доступны из объекта currentUser.

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

Accounts.onCreateUser((options, user)=> { 

    user.profile = getProfile(user); 

    function getProfile(user) { 

     let service = user.services; 
     let network = _.keys(service)[ 0 ]; 
     let data = service[ network ]; 
     let profile = {}; 

     if (network === 'facebook') { 
      profile.network = network; 
      profile.id  = data.id; 
      profile.email = data.email; 
      profile.name = data.name; 
      profile.locale = data.locale; 
      profile.gender = data.gender; 
      profile.picture = 'http://graph.facebook.com/' + data.id + '/picture?type=square'; 
     } 

     else if (network === 'google') { 
      profile.network = network; 
      profile.id  = data.id; 
      profile.email = data.email; 
      profile.name = data.name; 
      profile.locale = data.locale; 
      profile.picture = data.picture; 
     } 

     else if (network === 'twitter') { 
      profile.network = network; 
      profile.id  = data.id; 
      profile.email = data.email; 
      profile.name = data.screenName; 
      profile.locale = data.lang; 
      profile.picture = data.profile_image_url_https; 
     } 

     let value  = {}; 
     value[ network ] = profile; 
     return value; 
    } 

    Meteor.users.update(user._id, { 
     $set: { 
      profile: user.profile 
     } 
    }); 

    return user; 

}); 
Смежные вопросы