2012-06-22 8 views
6

私と私の同僚は、ログインプロセスを含むアプリケーション(Webアプリケーションとモバイルアプリ(iPhone & android)の両方)を開発しています。 現在、私たちは独自のログインメカニズムを持っています(ユーザーがアプリケーションのアカウントにサインし、その情報をデータベースに保存しています)。私たちはoAuthを統合し、ユーザーがFacebook、Twitter、LinkedIn、Googleでログインできるようにしています。ユーザーを覚えておくためのoAuthの標準は何ですか?

ユーザーがこれらのいずれかを使用してログオンすると、ログインプロセスはアプリケーション外で発生し、基本的にはリソースへのアクセス権のみを取得することがわかります。

私の質問は次のとおりです。oAuthを通じて、ユーザーをどのように覚えていますか?すなわち、ログインしているユーザは、読取り/書込み特権を有し、プリファレンスを有する。彼らが実際に私たちのアプリを使ってサインアップしていないときに、どうやってそれらを覚えていますか?自分の電子メールアドレスを "Users"テーブルに保存できますか?

このような場合のベストプラクティスは何ですか?

お寄せいただきありがとうございます。

答えて

11

いくつかのOAuth対応Webサイト用の認証データベースを構築したので、私はあなたが留意すべきことをいくつか学んだと言えます。

  1. サインアップ/サインインに使用したOAuthプロバイダとは完全に独立したサイトのユーザー表が必要です。これにより、サイトのユーザーは、複数のアカウントをサイトのプライマリIDで結合することができます。 (例えば、FacebookとTwitterの両方をあなたに関連付けます)
  2. ユーザーにサインアップさせるときは、そのユーザーから電子メールアドレスを取得する必要があります。あなたがFacebookにそれを求めているのか、直接質問しなければならないのか。これにより、サードパーティのOAuthだけに依存することから、後でユーザーを自分のサイトに自分のパスワードを設定することに「アップグレード」することができます。 (パスワードリセットページへのリンクを送信して、最初のパスワードの作成を開始するだけです)
  3. 電子メールアドレスをプライマリキーとして使用したくない場合。実際に説明しているかどうかは分かりませんが、セッションを維持するなどのために使用するローカルユーザーIDが必要です。Facebook IDまたはTwitter IDをローカルに関連付けますIDを入力し、そのような識別子間の対応関係を使用して、ログインするユーザーのサイトのユーザーと照合します。
+2

フィードバックに感謝します!いくつかの質問: - ポイント#1に関しては、ユーザーが異なるOAuthアカウント(Facebook、Twitterなど)でログインしても、それらはまだリンクされており、実際のアカウントと見なされます。 - ポイント#2に関して、アップグレードとはどういう意味ですか?このユースケースを明確にしてください。 - ポイント#3に関しては、システム/データベースによって生成された「ローカルユーザID」か、エンドユーザによって指定されていますか? – mustang888

+0

また、次のユースケースをどのように処理しますか: ユーザーXはFacebook経由でログインします。私は彼のFacebook IDを保存し、ローカルのユーザーIDにリンクします。次回は、ユーザーXがTwitter経由でログインします。どのように私は自分のユーザーの好みを取得することができるように、それは同じ人(Facebookを介して以前にログインした人)であることを決定する方法は、電子メールアドレス(彼のFacebookとTwitterアカウントの間で共通かもしれません。ありますか?)助けてくれてありがとう! – mustang888

+0

彼らは電子メールを提供していないので、Twitterでどのように動作しますか? Twitterのユーザーが電子メールのようなユニークなアイデンティティなしでFacebookのユーザーと同じであるかどうかを知る方法はありますか? – CMCDragonkai

関連する問題