現在、自分のサイトには既存のログイン システムがあり、ユーザーが Facebook を通じて自分のサイトにサインアップできる機能を追加したいと考えています。
これが私のユーザーモデルの外観です。
ユーザー モデル:
- Eメール
- 電話
- パスワード
- フェイスブックのユーザーID
- 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);
これを行う適切な方法は何ですか?
また、ユーザー登録については、Registration プラグインを使用するのではなく、Facebook でサインアップをクリックすると、認証用のウィンドウがポップアップし、別の場所に移動する他のほとんどの場所で見たフローを好むでしょう。電話番号などの残りの詳細を入力する画面。これを行う方法について何か考えはありますか?