私は web サイトで spring-security-facebook grails プラグインを使用してきましたが、それは魅力のように機能します。
実際、これは非常にうまく機能するので、それがどのように機能するのかをあまり掘り下げる必要はありませんでした。
json REST API を公開する webapp があります。認証は、ユーザー/パスワードを使用するか、Facebook の資格情報を使用して行うことができます。そのために、このプラグインを使用しています。認証とユーザーのメールだけが必要です。この目的でリダイレクト フィルター (FacebookAuthRedirectFilter) を使用しています。このコンテキストでは完璧に機能します。
現在、phonegap を使用してモバイル アプリケーションを構築しようとしているため、モバイル アプリケーションは純粋に html、js、および css であり、AJAX 要求を使用して同じ webapp とやり取りしたいと考えています。
問題が発生するのは、モバイル アプリのコンテキストでは、html ファイルがアプリケーションにバンドルされているため、ローカルである (そして、このようにする必要がある) ためです。
私の質問は、この場合、どのようにユーザーを認証できますか?
そのままにしておくと、ログインに成功した後、モバイルアプリは webapp のドメインにリダイレクトされ、ローカルの html ファイルの取得を停止しますが、これは私が望んでいるものではありません。
私はある種のクライアント認証が必要だと思います。そして、AJAX リクエストを webapp に送信して、Facebook の Cookie を何らかの方法で追加するので、webapp への後続の AJAX リクエストはすでに認証されています。
しかし、私は完全に間違っている可能性があり、別の方法で行う必要があります。
どんな助けでも本当に感謝します。
(明確でない場合は、詳しく説明したり、説明を追加したりできます。質問してください)。
編集
Igor の提案を行った後、signedRequest アプローチをテストするために FacebookAuthDirectFilter を配置するようにプラグインにいくつかの変更を加えました。また、phonegap アプリに phonegap-facebook-plugin を統合しました。
デバイスで facebook に正常にログインできますが、モバイル側で signedRequest を取得できません。
このスレッドは、JS SDK getLoginStatus が userID も signedRequest も返さないことを示唆しているため、この場合は signedRequest を取得できない可能性があります。
ただし、モバイル側には userId と access_token があり、ユーザー情報を取得するために必要なのは (私が思うに) これだけです。spring-security-facebook grails プラグインでこの情報を使用してユーザーを認証できますか? (FacebookAuthRedirectFilter は、私が持っていない「コード」を使用します)
ユーザーが共通の Web サイトを介して接続する場合と、ユーザーがモバイルから接続する場合とで access_token が異なるため、ここには別の微調整があります。プラグインはそれを保存しますが、それがどのような影響を与えるかはわかりません。
どうもありがとう!