私はSteam APIを使用するプログラムを作成しようとしています。 APIキーが含まれているので、クライアントからメソッドの秘密の実際のコードを保持しながら、クライアントからユーザーの情報を取得するメソッドを呼び出すことができるようにしたい。Meteor:クライアントからのアクセス機能、サーバー上で実行
key = 'xxxxxxxxxxxxxxxx';
Meteor.steamFunctions = {
getName: function(user){
var userSteamId = user.profile.id;
Meteor.http.get('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' + key + '&steamids=' + userSteamId, function(error, resultJSON){
if (error){
return 'Error in Steam API';
} else {
var json = JSON.parse(resultJSON);
return json.personaname;
}
})
},
getPic: function(user){
var userSteamId = user.profile.id;
Meteor.http.get('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' + key + '&steamids=' + userSteamId, function(error, resultJSON){
if (error){
return 'Error in Steam API';
} else {
var json = JSON.parse(resultJSON);
return json.avatarfull;
}
})
}
}
私は、クライアント側のスクリプトでこのようにそれを呼び出そう:
if (Meteor.isClient){
Template.profile.helpers({
'getName': function(){
return Meteor.steamFunctions.getName(Meteor.user());
}
});
}
ただし、
を投げ、私はこのように、サーバーのフォルダにグローバルなどのメソッドを定義してみましたデータにアクセスしている最中にユーザーに秘密を保持する方法を教えてください。
私の問題は今、ユーザーが実際に "ログイン"する前にクライアントから呼び出されているため、 "未定義からアクセスできない"というエラーが出ます。私はwaitOn Meteorを使ってみました。アイロンルータルーターファイルのuser()、私も高速レンダリングをインストールしようとしました...どちらもうまくいかないようです。待機を達成するためのより簡単な方法を知っていますか?いずれにせよ、答えをありがとう、私は本当にそれを感謝します:) –
それは簡単に修正する必要があります。追加する前に、スチーム名がいつ変更されるのか、プロファイルテンプレートがレンダリングされる時期を教えてください。たとえば、名前が変更されず、プロファイルが多くレンダリングされた場合、多くの不要なコールが発生します。その場合は、おそらくグローバルに設定する必要があります。 –
だから私は別の道をやりましたし、実現可能かどうかわからない/正しいものです。私はすべての情報を保持するコレクションを作成することを考えていました。情報はonCreateUser()に挿入され、onLogin()でログインするたびに情報が呼び出され、更新されます。コレクション。しかし、これが最善の方法であるのかどうかは分かりません。それについて意見はありますか?申し訳ありませんが、私はあなたにこれを乗っ取っています...私は物事を行うための最善の方法を知りません:) –