我正在将Facebook 的添加朋友对话框添加到 Rails 应用程序中的用户显示页面。
我已将以下代码添加到页面
<%= 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 响应中。