1

現在、メンバーシステムを実装する従来の方法を使用しています。たとえば、ユーザーテーブルとその他の関連テーブル (user_product など) には、そのユーザーにリンクするための外部キーがあります。

問題は、Facebook を介してメンバー ログインを使用するにはどうすればよいかということです。例えば

  • Facebook からの情報取得を使用して、ユーザー テーブルに新しいアカウントを自動的に作成する必要がありますか?

  • facebook user などの新しいテーブルを作成してから挿入する必要がありますか?

  • データベースに追加せずに、ログイン情報を無視する必要がありますか?

私が遭遇する問題は、user_id があり、Facebook からログインした人がそれを持っていないことです。そのため、 purchase などの機能を使用すると、レコードを挿入できません。ただし、それらをユーザー テーブルに追加すると、いくつかの情報が得られます。パスワード、電話などの行方不明..... では、Facebook を介したログイン処理の一般的な部分は何ですか? ありがとう

4

1 に答える 1

1

これを実際に処理するには、いくつかの異なる方法があります。一部のサービスでは、ユーザーが [Facebook からログイン] をクリックした後でも、情報を入力する必要があります。絶対に必要な情報がない限り、このアプローチはお勧めしません。

ユーザーに対してポリモーフィックなアプローチを取り、通常のユーザー テーブルと Facebook ユーザー テーブルを持つことができます。SQL データベースで継承にアプローチする方法は他にもありますが、これは複雑になる可能性があります。

3 番目のアプローチは、Facebook の ID トークンと認証トークンをユーザー テーブルの null 許容列として使用することです。これには、パスワード列をヌル可能にするか、長くてランダムなものに設定する必要もあります。このように、Facebook に関連付けられたアカウントは、サインイン方法を除いて、他のアカウントと同じように機能します。メールを持っているので、Facebook ユーザーは「パスワードのリセット」オプションを使用して、パスワード。

編集:

ユーザーの Facebook レコードを維持するには、必要なものの列を作成する必要があります。Facebook id、oauth トークン、oauth シークレットなどがあります。ユーザーが facebook でサインインをクリックしたときに、Facebook からの応答を受信したら、指定された facebook ID を持つユーザーがいるかどうかを確認するためにチェックを実行する必要があります。存在する場合は、ユーザーをサインインします。それ以外の場合は作成します。

OmniAuth ソリューションを見るとさらに簡単です。OPAuthはそのようなソリューションの 1 つです。ただし、このようなものを導入すると、既存のコードの一部を作り直す必要がある場合があります。

于 2013-11-11T08:42:32.317 に答える