Railsアプリのユーザー表示ページにFacebookの友達追加ダイアログを追加しています。
ページに次のコードを追加しました
<%= link_to "Friend on Facebook", "http://www.facebook.com/dialog/friends/?id=#{@user.facebook_uid}&app_id=#{@my_app_id}&redirect_uri=#{user_url(@user)}" %>
これまでのところ順調で、Facebook から次のようなコールバック応答が返ってきました。
If the user clicks to "Add Friend" (not sure where the additional # characters are coming from":
http://myapp.com/user/1?action=1#_=_
If the user clicks "Cancel":
http://myapp.com/user/1?action=0#_=_
これらの応答を検出したいのですが、ユーザーコントローラーには次のコードがあります
def show
....
if params[:action] == 1
flash[:success] = "Friend added!"
elsif params[:action] == 0
flash[:error] = "Not added"
else
flash[:notice] = "no message"
end
end
Facebook コールバックは常に条件を破棄し、「メッセージなし」フラッシュを生成します。文字列、整数への変換、文字の追加など、さまざまな順列を試しました#_=_
。
<%= params %>
私が見るビューでレンダリングすると
{"action"=>"show", "controller"=>"users", "id"=>"5"}
ただし、アドレスバーの URL には Facebook パラメーターがあります
http://myapp.com/user/1?action=1#_=_
これに対する修正を見つけたいと思っていますが、何が起こっているのかを理解したいと思っています. action=1 が params 応答に追加されると想定していました。