2017-03-09 5 views
3

私はomniauth-facebook gemを使用しています。ユーザーが参加しようとしているかどうかを示す文字列をFacebookに渡したいので、自分のサイトに戻ったときに情報を使用できます。omniauth facebookでインテントを表示

私はこのような何かを行うことができればそれは素晴らしいことだ:

= link_to 'Join with facebook', '/auth/facebook?intent=join' 
= link_to 'Login with facebook', '/auth/facebook?intent=login' 

誰もがが、私はこれをしたい理由を知りたい場合は、ここで私が情報をどうする予定のものです:

# pseudo code 
- if authentication fails 
    - if user was trying to join using facebook 
    = return them to the signup url 
    - elsif user was trying to login using facebook 
    = return them to the login url 

facebookに私の意図を伝えることができますし、必要に応じて使用できるように応答でその意図を返すことができますか?これが可能であると、私のように

+1

私はあなたがこれを知っていると思う、これはfacebook-omniauthに関するドキュメントです。私はこれについての情報は見つけられませんでしたが、もしあなたがoauthを検索するならばfacebookにもっと詳しい情報があります https://github.com/mkdynamic/omniauth-facebook –

+1

ありがとう@FabrizioBertoglio、私は解決策は、ちょうど答えを書くことです。 – stephenmurdoch

答えて

1

が見える

私はが工夫を使用して、これを行うためにセッション変数を設定することを避けるために希望はないよ、Facebookは確かにこのようなニーズのためのソリューションを持っている必要があります...コードは機能しません。私はFacebookのからの応答を検査するとき、私は以下を参照してください。

>> request.env['omniauth.auth']['intent'] 
=> nil 
# no dice 

>> params 
=> returns lots of stuff, but not the thing I want 
# worth a try 

>> request.env['omniauth.params'] 
=> {"intent"=>"login"} 
# bingo 

だから、レールparamsハッシュは、必要な情報を含んでいない一緒に置きますが、応答は、符号なしの詳細の束を含んでいますが、これはどこです私が望む情報を見つけることができます。

あなたも呼び出すことができる注目に値する

>> request.env['omniauth.origin'] 
=> "http://localhost:3000/join" 

かなりクール。

+0

私は同じトリックを使用して、ポップアップによる認証の流れを改善しました:D http://stackoverflow.com/questions/4491433/turn-omniauth-facebook-login-into-a-popup/9592204#9592204 – Ashitaka

+0

Do notユーザがログインを受け付けないときに呼び出される失敗アクションに対して同じことを忘れないでください。 – Ashitaka

+0

リンクとチップ@ Thanksku – stephenmurdoch

関連する問題