2016-07-19 1 views
0

Im используя внешний API. Я хотел бы показать авторизовались ник пользователя (пара API)Как передать переменную с серверной стороны на сторону js Meteor

сервер main.js

Meteor.startup(function() { 
    ServiceConfiguration.configurations.upsert(
     { service: 'steam' }, 
     { 
     $set: { 
      loginStyle: 'redirect', 
      timeout: 10000 // 10 seconds 
     } 
     } 
    ); 

    Accounts.onLogin(function() { 
     var steam64Id = Meteor.user().profile.id; 
     console.log(steam64Id + " is logged in."); 

     // To retrieve more details about user 

     var steamApiKey = ("XXXXXXXXXXXXX"); 
      var result = Meteor.http.get('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=xxxxxxxxx&steamids=76561197977045111'); 
       console.log(result.data.response.players[0].personaname); 
    }); 
    }); 

Это возвращает «Мой Ник» в журнале консоли, но я хотел бы получить эту переменную клиентской стороне, поэтому я могу добавить {{Nickname}} в шаблон js клиента и показать псевдоним пользователя в шаблоне

ответ

0

Наиболее очевидным способом было бы добавить этот результат в профиль пользователя в их пользовательской записи. Затем он будет автоматически синхронизирован с клиентом и доступен для использования там.

var steamApiKey = ("XXXXXXXXXXXXX"); 
var result = Meteor.http.get('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=xxxxxxxxx&steamids=76561197977045111'); 
Meteor.users.update(Meteor.userId(), 
    { $set: { 'profile.personaname': result.data.response.players[0].personaname }} 
); 

На стороне клиента, сделать себе помощника (или глобальный один или один специфичны для шаблона (ов), где вам это нужно), чтобы получить это значение:

Nickname(){ 
    return Meteor.user().profile.personaname; 
} 

Обратите внимание, что объект профиля под пользователем автоматически публикуется клиенту, поэтому вам не нужно делать для него специальную публикацию.

+0

Спасибо, Мишель, очень ценю это. Im wonderin, будет ли результат по-прежнему оставаться таким же, если другой пользователь входит в систему? Его обновление уникального userId? В какой ситуации изменится userId, но это тот же пользователь? Потому что я хотел бы создать db для пользователей, которые вошли в систему перед/новыми пользователями. – Farhan

+0

Я не вижу, где вы получаете другое имя person из парового API с другим пользователем. Должна ли какая-то часть профиля пользователя быть частью http-get? Легко запросить людей, у которых есть или нет 'profile.personaname', с' $ isSet' –

+0

Вы правы, это отличается, но мне просто интересно об этой части, Meteor.users.update (Meteor.userId(), если, скажем, я вхожу на сайт с двух разных компьютеров/ISP, будет Meteor.userId() быть разными или одинаковыми для обоих. Я просто заинтересован coz Я хочу использовать db для хранения любых пользователей для входа в систему сайт, боюсь, что могут быть обманы, а затем я могу установить, если steam64id уже существует, я могу просто обновить его там. – Farhan