Authentication 使用Accounts.onCreateUser为loginWithMeetup修改user.profile
当用户使用Meetup登录包创建帐户时,我希望获得更多的值,例如用户的全名和其配置文件图片的URL,然后将它们存储在user.profile中。目前,我正在检查服务是否为“meetup”,执行以下GET请求并尝试将其存储在user.profile中Authentication 使用Accounts.onCreateUser为loginWithMeetup修改user.profile,authentication,meteor,meteor-accounts,meetup,Authentication,Meteor,Meteor Accounts,Meetup,当用户使用Meetup登录包创建帐户时,我希望获得更多的值,例如用户的全名和其配置文件图片的URL,然后将它们存储在user.profile中。目前,我正在检查服务是否为“meetup”,执行以下GET请求并尝试将其存储在user.profile中 if (service == "meetup") { var accessToken = user.services.meetup.accessToken; var request = Meteor.http.get
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”)
下的代码,我可以创建一个帐户,尽管没有我需要的字段,所以我知道问题在这里。如何获取用户的全名和配置文件图片URL并将其存储在user.profile下
非常感谢:)请尝试将您的代码更改为(仅使用上所述的API):
if(服务==“meetup”){
var accessToken=user.services.meetup.accessToken;
试一试{
var result=HTTP.get('https://api.meetup.com/2/profiles',{
参数:{
访问令牌:访问令牌
},
标题:{“用户代理”:“Meteor/1.0”}
});
检查(结果、数据、对象);
}捕获(错误){
投掷误差;
}
变量配置文件=uu.pick(result.data,
“姓名”,
“照片地址”
);
user.profile=profile;
返回用户;
}
我不太了解您问题中Meteor特定的部分,但是您想要的信息可能在API调用中,而不是在profiles API调用中。您可能想要获取https://api.meetup.com/2/member/self
获取有关当前已验证用户的信息
API调用的结果将包括成员的姓名以及带有个人资料照片URL的
照片对象。点击此处。谢谢你的其他答案!我确实设法让代码正常工作了。我尝试了一些不同的方法,因此我没有找出问题的原因,但我确信部分原因是我使用了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;
}
上面的代码在存储返回的数据之前不会对其进行验证,它将以最终形式进行验证
我希望这对任何有类似问题的人都有帮助。如果您通过一些外部服务登录,他们中的大多数人都不会给您用户名,如果没有此注册将无法成功,请尝试addin user.username~尝试sbking的建议。据我所知,没有Meteor.http.get
(只有http.get
),这就是代码无法工作的原因。这就是代码的问题之一!我终于让它工作了,我把我的代码贴在下面。谢谢你的帮助!有没有一种方法可以通过关键字来查找组?嗯,我似乎找不到一种方法来搜索具有关键字本身的组,但您可以根据主题(组的主题)进行查询。问题是,每个查询只允许提交一个主题。有关更多信息,请参阅