86

サイトにログインして自分自身を認証する唯一の方法がFacebookを使用しているWebサイトがあります(これは私の選択ではありませんでした). Facebook で初めてログインすると、アカウントが自動的に作成されます。

ここで、サイト用の iPhone アプリケーションと、他のユーザーがサービスを使用するためのパブリック API を作成したいと考えています。

この質問は、アプリ/API から当社の Web サイトで認証する方法に関するもので、2 つの部分に分かれています。

  1. 認証方法として Facebook OAuth のみを使用する API から Web サイトへの REST 認証を処理する正しい方法は何ですか?

私は、REST API の標準的な認証方法について多くのことを読んで調査しました。Basic Auth over HTTPSなどの方法は使用できません。ユーザーの資格情報がないためです。このようなものは、API を使用してアプリケーションを認証するためだけのようです。

現在、私が考える最善の方法は、API の /authorize エンドポイントに到達し、Facebook OAuth にリダイレクトしてからサイトにリダイレクトし、API のユーザーが後続の認証に使用できる「トークン」を提供することです。リクエスト。

  1. 私たちが作成する公式アプリケーションの場合、必ずしも同じ方法でパブリック API を使用する必要はありません。私たちのウェブサイトと対話してユーザーを認証する最良の方法は何でしょうか?

API (公開) キーと秘密 (秘密) キーを使用して、API を使用しているサードパーティ アプリケーションを認証する方法を理解しています (と思います)。ただし、アプリを使用しているユーザーの認証に関しては、ユーザーを認証する唯一の方法がFacebookである場合、どうすればよいかについてかなり混乱しています。

非常に明白な何かが欠けている、またはパブリック REST API がどのように機能するかを完全に理解していないように感じます。そのため、アドバイスやヘルプをいただければ幸いです。

4

3 に答える 3

100

更新:以下を参照

私もこの質問について一生懸命考えてきました。まだ完全にはわかりませんが、これが私が考えているルートです。私はRESTAPIを作成しており、ユーザーはFacebook接続でのみ認証を行っています。

クライアントの場合:

  1. Facebook APIを使用してログインし、OAUTH2コードを取得します。
  2. このコードをアクセストークンと交換します。
  3. カスタムAPIを呼び出すたびに、FacebookのユーザーIDとアクセストークンを含めます。

APIで(ユーザー認証を必要とするすべてのメソッドに対して):

  1. 上記のアクセストークンを使用して、/meFacebookグラフにリクエストを送信します。
  2. 返されたFacebookユーザーIDが、上記からAPIに渡されたユーザーIDと一致することを確認します。
  3. アクセストークンの有効期限が切れている場合は、追加の通信が必要です。

私はまだこれをテストしていません。どのように聞こえますか?

---更新:質問に答えるために2014年7月27日---

私はログイン時に一度だけ上記の交換を使用します。ログインしているユーザーを特定したら、独自のアクセストークンを作成し、そのトークンがその時点から使用されます。したがって、新しいフローは次のようになります...

クライアントの場合:

  1. Facebook APIを使用してログインし、OAUTH2コードを取得します。
  2. このコードをアクセストークンと交換します。
  3. パラメータとしてFacebookトークンを含め、 APIからアクセストークンをリクエストします

APIについて

  1. アクセストークン要求を受信します。
  2. Facebookアクセストークンを使用して/meFacebookグラフにリクエストを送信します
  3. Facebookユーザーが存在し、データベース内のユーザーと一致していることを確認します
  4. 独自のアクセストークンを作成して保存し、クライアントに返して、この時点から使用できるようにします
于 2012-11-18T20:55:05.747 に答える