我有一个流星应用程序,包含:
useraccounts:bootstrap;
service-configuration;
accounts-facebook;
facebook方面配置为允许来自localhost的请求。当使用来自atForm的facebook的注册/登录时,会出现一个弹出窗口
修改
弹出窗口实际上不是空的,但会显示一条消息“登录完成,点击关闭”但快速关闭,因为这是我在facebook方面的配置方式。
控制台记录错误:
Exception while invoking method 'login' undefined
编辑
这是服务conf:
ServiceConfiguration.configurations.remove({
service: 'facebook'
});
ServiceConfiguration.configurations.insert({
service: 'facebook',
appId: 'removed',
secret: 'removed'
});
修改
以下是客户端代码:
Template.atForm.events({
'click #at-facebook': function(event) {
console.log("facebook click");
Meteor.loginWithFacebook({
requestPermissions: ['email', 'user_friends']
}, function (err) {
if (err)
Session.set('errorMessage', err.reason || 'Unknown error');
});
}
});
修改 在Facebook上注册时,用户创建的内容如下:
{ createdAt: Thu Jan 21 2016 16:00:08 GMT+0100 (CET),
I20160121-16:00:08.108(1)? _id: 'Kgs3WswMdB9hsxMfp',
I20160121-16:00:08.108(1)? services:
I20160121-16:00:08.108(1)? { facebook:
I20160121-16:00:08.108(1)? { accessToken: 'removed',
I20160121-16:00:08.108(1)? expiresAt: 1458562023670,
I20160121-16:00:08.109(1)? id: 'removed',
I20160121-16:00:08.109(1)? email: 'removed',
I20160121-16:00:08.109(1)? name: 'Mathieu Kudla',
I20160121-16:00:08.109(1)? first_name: 'Mathieu',
I20160121-16:00:08.110(1)? last_name: 'Kudla',
I20160121-16:00:08.110(1)? link: 'https://www.facebook.com/app_scoped_user_id/removed/',
I20160121-16:00:08.110(1)? gender: 'male',
I20160121-16:00:08.110(1)? locale: 'fr_FR',
I20160121-16:00:08.110(1)? age_range: [Object] } } }
这似乎表明facebook握手成功了?
导致该错误的原因是什么?谢谢:))
答案 0 :(得分:0)
好的,我有点解决了。
我深入研究了登录尝试,发现oauth服务没有与用户正确配对。我不知道为什么会这样,或者如果有更好的解决方案,但我添加了一行:
if (user.services) { var service = _.pairs(user.services)[0]; }
到我的onCreateUser挂钩并在返回之前正确添加用户对象。它似乎已经完成了诀窍,但我不知道第一次我做得不好......