使用 Facebook 登录 Meteor
Meteor login with facebook
我有一个 meteor 应用程序,包含软件包:
useraccounts:bootstrap;
service-configuration;
accounts-facebook;
Facebook 端配置为允许来自本地主机的请求。在 atForm 中使用 register/signin 和 facebook 时,会出现一个弹出窗口
编辑
弹出窗口实际上不是空的,而是显示一条消息 'login complete, click to close' 但很快关闭,因为这是我在 facebook 端配置它的方式。
并且控制台记录错误:
Exception while invoking method 'login' undefined
编辑
这是服务配置文件:
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握手成功了?
导致该错误的原因是什么?谢谢:)
好的,我有点解决了。
我仔细研究了 log-in 次尝试,发现 oauth 服务未与用户正确配对。我不知道为什么会这样,或者是否有更好的解决方案,但我添加了以下行:
if (user.services) { var service = _.pairs(user.services)[0]; }
到我的 onCreateUser 挂钩并在返回之前正确附加用户对象。好像成功了,但是不知道第一次哪里做的不对...
我有一个 meteor 应用程序,包含软件包:
useraccounts:bootstrap;
service-configuration;
accounts-facebook;
Facebook 端配置为允许来自本地主机的请求。在 atForm 中使用 register/signin 和 facebook 时,会出现一个弹出窗口
编辑
弹出窗口实际上不是空的,而是显示一条消息 'login complete, click to close' 但很快关闭,因为这是我在 facebook 端配置它的方式。
并且控制台记录错误:
Exception while invoking method 'login' undefined
编辑
这是服务配置文件:
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握手成功了?
导致该错误的原因是什么?谢谢:)
好的,我有点解决了。
我仔细研究了 log-in 次尝试,发现 oauth 服务未与用户正确配对。我不知道为什么会这样,或者是否有更好的解决方案,但我添加了以下行:
if (user.services) { var service = _.pairs(user.services)[0]; }
到我的 onCreateUser 挂钩并在返回之前正确附加用户对象。好像成功了,但是不知道第一次哪里做的不对...