2011-03-01 6 views
7

私は自分のユーザー登録、ログイン、認証がうまく機能しています.Oauth 2の実装を追加して、Facebookやログインに接続できるようにしています/少ないステップでサインアップ。Oauthでモデリングするユーザー2

私はこの作業の開始に成功しました。これまでのところ、私はfacebookを使ってユーザーを認証し、自分の情報にアクセスする権限を与えられます。私はまだTwitterの認証を設定しようとしていないが、私はそれが同様の方法で動作すると推測する。

私が今考えているのは、基本的に電子メール、名前、パスワードを持つユーザーのテーブルで構成される既存のユーザーモデルにこれを統合する方法です。

それがあるとアクセスプロバイダテーブルを設定するように私は私のユーザーテーブルを残す必要があります。

id | user_id | provider_id | access_key 
--------------------------------------- 
1 | 4 |  1  | xyz 
2 | 4 |  2  | pqr 
3 | 7 |  1  | dfr 

と私はなどから収集されたユーザーに関する情報を格納し、「ユーザーのFacebook情報」テーブルを言うことができますFacebookのグラフでそのユーザーにアクセスしますか?

このようにして、フェイスブック経由で接続されているかどうか(名前、電子メール、パスワード)に関係なく、すべてのユーザーが持つコア情報でUsersテーブルを正規化し、利用可能ですか?

これを行うより良い方法はありますか?このタイプのデータベースモデルを設計するための優れたガイドまたはチュートリアルはありますか(Quoraと思う)?私もPHPのチュートリアルを処理することができますbtw!

残念な質問です。

答えて

6

TwitterとFacebookの両方を実行しようとしている場合は、OAuthクライアント用にSignetまたはOmniAuthを検討することをおすすめします。私はそれを書いて以来、私はSignetに偏っていますが、OmniAuthはあなたがやろうとしていることに依存して、もうちょっと待っていたので、今の方が良い選択かもしれません。

データモデリングについては、適切なアイデアがあります。おそらくもう少し一般的にする必要があります。 access_keyの代わりに、おそらくaccess_tokenとOAuth2の場合はrefresh_tokenが必要です。一方、OAuth 1は資格情報キーと秘密のペアを使用します。だから多分このようなもの(主キーと外来キーを省いて):

auth_scheme | access_token | refresh_token | key | secret | username | password 
------------------------------------------------------------------------------- 
oauth_1  |    |    | 123 | 456 |   | 
oauth_2  | 123   |    |  |  |   | 
oauth_2  | 123   | abcd   |  |  |   | 
xauth  |    |    |  |  | abcd  | 12345 
clientlogin |    |    |  |  | abcd  | 12345 
+0

私は正しい道に少なくともいた!とにかく、私はSignetとOmniAuthのGitHubサイトを見て、その件についていくつかのRailsCastを見つけました。私はすべての方法を最初に戻って、ユーザーコントロールのためにDeviseを実装し、その上にOmniAuthをレイヤーすることに決めました。私はOmniAuthをSignetよりもこの時点で選択しました。これは主に包括的なドキュメントを提供するように見えます(私はノブです!)、それを統合するためのRailsCastがあることが大好きです。あなたの記事の完全な開示と感謝を本当に感謝します。 –

関連する問題