ユーザーのログインに Facebook 認証を使用する Web サイトがあります。認証に oAuth 2.0 サーバー側フローを使用し、すべて正常に動作します。
私は現在、同じ Web サイト用の iPhone アプリケーションを開発しており、ユーザーが FB 認証を使用して iPhone アプリケーション経由で Web サイトにサインインできるようにしたいと考えています。Facebook iOS SDK は、クライアント側フローを使用して認証を行うメカニズムを提供します。アプリはアクセス トークンを取得します。
サーバーでユーザーを認証し、アクセス トークンをサーバーで使用できるようにするために、このアクセス トークンをサーバーに (https 経由で) 送信し、DB に対してユーザーを認証し、独自のセッション関連の Cookie を設定することを考えました。これは推奨または推奨される方法ですか? オフライン アクセス許可を要求し、Web アプリケーションがサーバーから直接 FB ユーザー アカウントと対話するようにするには、サーバーにアクセス トークンが必要です。
私にとってより簡単なオプションは、iPhone アプリでも認証にサーバー側のフローを使用することです。新しいことを行う必要はなく、サーバー側のコードは Web サイトまたは iPhone アプリと同じです。それは可能ですか?
クライアント側の認証を使用できず、システムに対する認証のためにアクセストークンをサーバーに渡し、さらに使用するために保存することもできません。クライアント側の認証のために受け取ったアクセス トークンは、サーバー側の認証トークンとはまったく異なるものであり、この 2 つを同じ意味で使用することはできません。サーバー側の認証を使用する必要があります。
1 つの解決策 (ここで提供- 質問への最初のコメント) は、UIWebView を使用してサーバー側のフローをシミュレートすることです。次のコメントは、私が解決できなかったこのアプローチの問題について言及しています。
これは、ログイン後に Web ビューがリダイレクトされる URL を調べることで解決されました。
もう 1 つの問題は、私の iPhone アプリがクライアント側のやり取り (FBShare、友人のウォールへの書き込みなど) も行うことです。シミュレートされたサーバー側認証を使用する場合、これらの対話に対して別のクライアント側認証を行うか、面倒なアプローチを取り、これらのアクションをサーバー経由でルーティングする必要があります。後者は絶対に好ましくありません。どうすればいいですか?ユーザーエクスペリエンスが非常に悪くなるため、この二重ログインを回避できますか?