我目前有一个现有的网站登录系统,我想增加用户通过 Facebook 注册我的网站的能力。
这是我的用户模型的样子。
用户模型:
- 电子邮件
- 电话
- 密码
- 脸书用户名
- oauth 令牌
您可以通过提供电子邮件、电话和密码的常规方式进行注册。
或者您可以在 Facebook 上注册,您只需通过 Facebook 进行身份验证并提供您的电话号码。
我为此使用Facebook 注册插件 ,因为我需要电话号码字段。我已将redirect-uri 设置为http://mysite.com/fb_process,它将解析signed_request 并使用数据在我的数据库中创建一个用户。这部分工作非常顺利。
我不知道如何处理让已验证我的网站的用户返回以使用 Facebook 重新登录。
我正在使用 Javascript SDK,然后使用 jquery 将 Facebook 用户 ID 发布到 mysite.com/fb_login,该用户在数据库中查找具有相应 Facebook 用户 ID 的用户并将该用户登录。它在技术上有效,但它只是没有看起来不合适或不安全。您可以使用 mysite.com/fb_login?id={facebook_user_id} 登录某人。见代码:
window.fbAsyncInit = function() {
FB.init({
appId : 'APPID',
channelUrl : 'http://mysite.com/channel',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
function fbLogin() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.', response);
$.post('fb_login', {id:response.id})
.done(function() {
window.location = 'http://mysite.com/user/dashboard'
});
});
}
else {
console.log('User cancelled login or did not fully authorize.');
}
});
}
$('#fb-login').click(fbLogin);
这样做的正确方法是什么?
此外,对于用户注册,我宁愿不使用注册插件,而是更喜欢我在大多数其他地方看到的流程,您单击“使用 Facebook 注册”,弹出一个窗口进行身份验证,然后将您带到另一个屏幕以输入其余详细信息,例如电话号码。关于如何做到这一点的任何想法?