14

アプリに facebook/twitter 機能を使用してログインを実装しようとしています。oAuth に関するガイドをいくつか読んで、基本的な概念の一部を理解したと思います。理解した内容は次のとおりです (間違っている場合は修正してください)。

  1. myApp はリクエストを oAuth プロバイダーに送信し、(A) リクエスト トークンを取得します。
  2. (A)を認証するためにユーザーを送信し、(B)認証されたリクエストトークンを返します(これはoAuthトークンと呼ばれるものですか?)
  3. (B) を使用して (C) アクセス トークンを取得します。
  4. C を使用してユーザー情報にアクセスします。

そして、ここに私が頭を回避できないものがあります.ユーザーを識別するためにこれらのどれを使用/保存する必要がありますか? 私はそれらのそれぞれを使用する可能性について考えましたが、ユーザーが以前にサインインしたかどうかを確認する方法に常にこだわっています...

4

1 に答える 1

13

認証だけが必要な場合は、保存するだけuser_idで十分です。

したがって、次のような別のテーブルを作成します。

id | service_name | user_id | my_user_id

- は twitter/facebook のユーザー IDでservice_nametwitter認証facebookシステムではです。user_idmy_user_iduser_id

そう:

SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42

システムのuser_idを返すか、何も返さない

PS:service_name正規化できます(そして正規化する必要があります)、例を単純化するために文字列として保持しました

PPS:コメントで言ったように、おそらく「投稿/ツイート」が必要になるでしょう。

その場合、Twitter のユーザーのアクセス トークンを保存し、Facebook の追加情報を保存する必要はありませんが、publish_streamユーザーを認証するときに許可を要求します。

于 2012-04-11T05:22:26.527 に答える