私は、Rails 4アプリでOmniauthでDevise 3.5を使用しています。私は、ユーザーが自分のFacebookアカウントを自分のアプリケーションに接続できるFacebookとの統合を作成しました。現在、ユーザーが[接続]ボタンをクリックすると、/user/auth/facebook
に送信され、Omniauthが生成するコールバックURL:/user/auth/facebook/callback
にリダイレクトされます。私がしたいのは、場合によってはこのコールバックURLを手動でオーバーライドすることです。つまり、イニシャライザでオーバーライドしたくないという意味です。完全修飾URLです。たとえば、ユーザーがhttp://www.example.com/
を開始した場合、デフォルトのコールバックURLをhttp://app.example.com/user/auth/facebook/callback
で上書きすることができます。Devise/OmniAuthデフォルトのコールバックURLを無効にする
私のアプリにはダイナミックサブドメインがあり、ユーザーは(ほぼ)常にサブドメインで認証プロセスを開始します。残念ながら、FacebookはoauthリダイレクトURLでワイルドカードをサポートしていないように見えます。なぜなら、ユーザーがサブドメインにいるかどうかを検出し、Facebookアプリでホワイトリストに登録したコールバックURLを調整する必要があるからですプロセスは成功する。
私が読んだことから、URLヘルパーomniauth_authorize_path
はパラメータとして渡される追加の引数を受け入れます。私は成功せず、そのようにカスタムコールバックパスを渡して試してみた:
user_omniauth_authorize_path(:facebook, callback_path: @custom_callback)
私もredirect_url
とredirect_uri
にcallback_path
を変更しようとしましたが、何も動作していないようにみえます。生成されたリンクを見ると、実際にはURLのパラメータとしてコールバックが含まれますが、リンクをクリックすると、カスタムコールバックURLの代わりにデフォルトのコールバックURLにリダイレクトされます。
私はこの機能も必要です:( – diogopms