6

私と同僚は、ログイン プロセスを含むアプリケーション (Web アプリケーションとモバイル アプリ (iPhone & android) の両方) を開発しています。現在、独自のログイン メカニズムがあります (ユーザーがアプリでアカウントに署名し、データベースに情報を保存しています)。oAuth を統合し、ユーザーが Facebook、Twitter、LinkedIn、Google にログインできるようにすることを検討しています。

さて、ユーザーがそれらのいずれかでログインすると、ログインプロセスはアプリケーションの外部で発生し、基本的にリソースへのアクセス許可のみを取得することを理解しています.

私の質問は次のとおりです。oAuth を使用して、ユーザーをどのように記憶するのでしょうか? つまり、ログインするユーザーには読み取り/書き込み権限があり、設定があります。彼らが実際に私たちのアプリからサインアップしていないとき、どうやってそれらを覚えていますか..彼らの電子メールアドレスを「Users」テーブルに保存できますか??

このようなシナリオでのベスト プラクティスは何ですか?

提供できる情報をありがとう。

4

1 に答える 1

11

いくつかの異なる OAuth 対応 Web サイト用の認証データベースを構築したことで、覚えておくべきいくつかのことを学んだと言っても過言ではありません。

  1. サインアップ/サインインに使用した OAuth プロバイダーから完全に独立した、サイトのユーザーのテーブルが必要です。これにより、サイト ユーザーは、サイトのプライマリ ID の下で複数のアカウントを組み合わせることができます。(たとえば、Facebook と Twitter の両方を関連付けます。)
  2. ユーザーにサインアップさせるときは、そのユーザーから電子メール アドレスを取得する必要があります。Facebookに依頼するか、直接依頼するか。これにより、後でユーザーを純粋にサード パーティの OAuth に依存することから、サイトに独自のパスワードを設定するように "アップグレード" できます。(最初のパスワードの作成を開始するには、パスワード リセット ページへのリンクを送信するだけです。)
  3. 電子メール アドレスを主キーとして使用したくない。それがあなたが実際に説明していることかどうかはわかりませんが、セッションの維持などに使用するローカル ユーザー ID を彼らに持たせたいと本当に思っています。次に、Facebook ID または Twitter ID をそのローカルに関連付けます。 ID、およびそのような識別子間の対応を使用して、サイトのどのユーザーがログインしていると見なすかを照合します.
于 2012-06-22T22:55:37.337 に答える