1

私は、ページのタブに表示されるシンプルなFacebookアプリケーションを開発しています。私は、ユーザーを認証するための最良の方法が何であるか把握しようとしています。通常のページリダイレクトは正しくないと思われます。これはOmniAuth + Deviseがどのようにして行うのかを示しています。 JavaScript SDKの認証ダイアログでこの作業を行うにはどうすればよいですか?Facebookタブの開発時にOmniAuth + Deviseを使用する適切な方法は何ですか?

答えて

2

DMCSが言ったように、FB.getLoginStatusFB.loginは物事のJS側でそれを行います。あなたは、プロバイダ固有のロジックが自分の宝石に出て分割されている最新のomniauthを使用していると仮定すると、工夫/ omniauthでそれをフックについては、Facebookの-omniauth Githubのページがようにそれを説明する:

クライアントサイドのフローは、FacebookがCookieに入れた署名付きリクエストから認証コードを解析することをサポートしています。つまり、通常通りにFacebook Javascript SDKを使用することができ、ユーザーがFB.login successコールバックで認証されると、コールバックエンドポイント(デフォルトでは/ auth/facebook/callback)を押すだけです。

これはすごく簡単です。 FB.loginの後、単純なwindow.location.href = '/ auth/facebook/callback'がトリックを行います!

+0

不明なエラーが発生した場合は、コールバックコントローラで 'failure'メソッドを定義することができます。これは私がCSRFに起因するエラーを見つけるのを助けました - 私はこのomniauth-facebookバグ報告の助けを借りて解決しましたhttps://github.com/mkdynamic/omniauth-facebook/issues/73 –

0

はい、Javascript SDKですばやく動作させることができます。ここでの例に従ってください:https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/https://developers.facebook.com/docs/reference/javascript/FB.login/

+0

私の質問は、これらのSDKコンポーネントをDeviseとOmniAuthに統合する方法です。 – bloudermilk

+0

JavaScriptにトークンがあれば、それをOmniAuth/Deviseコードを実行するサーバーまでAJAXします。 – DMCS

+0

これは概念的に私が考えたことです。既存のDeviseコントローラを使用できるかどうか、またはロジックを書き直す必要があるかどうかは不思議です。 – bloudermilk

関連する問題