当用户使用Meetup登录包创建帐户时,我想获得更多的值,例如用户的全名和他们的个人资料图片的URL,然后将它们存储在user.profile中。目前,我正在检查服务是否为#34; meetup",执行以下GET请求并尝试将其存储在user.profile中。
if (service == "meetup") {
var accessToken = user.services.meetup.accessToken;
var request = Meteor.http.get('https://api.meetup.com/2/profiles',{
params : {
access_token : accessToken
},
headers: {"User-Agent": "Meteor/1.0"}
});
if(result.error){
throw result.error;
}
profile = _.pick(request.results,
'name',
'photo_url'
);
user.profile = profile;
return user;
}
但是,当我尝试创建帐户时,我收到了错误消息。请注意,如果我要删除if (service == "meetup")
下的代码,我可以创建一个帐户,但没有我需要的字段,所以我知道问题就在这里。如何获取用户的全名和个人资料图片网址并将其存储在user.profile下?
非常感谢提前:)
答案 0 :(得分:1)
尝试将代码更改为此代码(仅使用http://docs.meteor.com中所述的API):
if (service === "meetup") {
var accessToken = user.services.meetup.accessToken;
try {
var result = HTTP.get('https://api.meetup.com/2/profiles',{
params : {
access_token : accessToken
},
headers: {"User-Agent": "Meteor/1.0"}
});
check(result.data, Object);
} catch (error) {
throw error;
}
var profile = _.pick(result.data,
'name',
'photo_url'
);
user.profile = profile;
return user;
}
答案 1 :(得分:0)
我对您问题的Meteor特定部分了解不多,但您想要的信息可能在get member API调用中,而不是在配置文件API调用中。您可能希望获取https://api.meetup.com/2/member/self
以获取有关当前已验证用户的信息。
API调用的结果将包括成员的姓名以及带有个人资料照片网址的photo
对象。
答案 2 :(得分:0)
OP在这里。谢谢你的其他答案!我确实设法让代码工作。我尝试了一些不同的东西,所以我没有找出导致问题的原因,但我确信部分原因是我使用的是Meteor.http.get而不是HTTP.get(如@sbking和@fuzzybabybunny建议的那样)和我在请求中使用/ 2 / profile /而不是/ 2 / member(谢谢@mlc)。
最后,我决定使用我创建的空的Meetup帐户中的API密钥而不是之前的访问令牌。
以下是代码:
if (service == "meetup") {
var meetupId = user.services.meetup.id;
var target = 'https://api.meetup.com/2/member/' + meetupId + '?key=' + MEETUP_API_KEY + '&signed=true';
var result = HTTP.get(target, {
params: {
format: 'json'
}
});
var userProperties = result.data;
options.profile = {
'name': userProperties.name,
'link': userProperties.link,
'bio': userProperties.bio,
'picture': userProperties.photo.photo_link,
'id': meetupId
};
user.profile = options.profile;
return user;
}
上面的代码在存储之前不会验证返回的数据,它将以最终形式存储。
我希望这有助于任何有类似问题的人。