【问题标题】:bad URL request with Koala使用考拉的错误 URL 请求
【发布时间】:2013-04-06 08:01:49
【问题描述】:

我的 Koala for Rails 实现存在问题,导致发送对话框出错,因为 Facebook 认为我的网站 URL 无效。

会发生什么:

1) 当我在发送对话框中包含诸如 herokuapp-japanized-tree-URL/restaurants/2 之类的 URL 时,Facebook API 认为它无效。(API 错误 100)

2) 我调试了 URL,当它们被远程访问时确实存在错误,因为 Facebook 的 API 会验证链接的有效性。这仅在远程尝试期间发生,而不是在用户访问该页面时发生。

3) 我发现了代码中的弱点,它与考拉有关:

def set_access_token
        begin
        session['fb_cookie'] ||= Koala::Facebook::OAuth.new.get_user_info_from_cookie(cookies)
        @access_token = session['fb_cookie']["access_token"]
    rescue Koala::Facebook::OAuthTokenRequestError
        session['fb_cookie'] = nil
        set_access_token
    end

问题是@access_token 保持为零,无论它之前是否存在。我认为这与在服务器上发出远程请求时未设置 cookie 有关 - 所以一切都归零。

这是在 Heroku 日志中说明错误的日志 - 它与我在这句话正上方显示的代码中的点相匹配:

2013-04-06T07:59:25+00:00 app[web.1]: Processing by SessionController#home as */*
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: NoMethodError (undefined method `[]' for nil:NilClass):
2013-04-06T07:59:25+00:00 app[web.1]:   app/helpers/session_helper.rb:18:in `set_access_token'
2013-04-06T07:59:25+00:00 app[web.1]:   app/helpers/session_helper.rb:58:in `parse_facebook_cookies'
2013-04-06T07:59:25+00:00 app[web.1]:   app/helpers/session_helper.rb:63:in `authenticate'
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: Completed 500 Internal Server Error in 0ms
2013-04-06T07:59:25+00:00 heroku[router]: at=info method=GET path=/home host=powerful-woodland-3700.herokuapp.com fwd="173.252.101.112" dyno=web.1 connect=1ms service=15ms status=500 bytes=643

【问题讨论】:

    标签: ruby-on-rails facebook-graph-api koala


    【解决方案1】:

    这里的关键是,当 FB 远程 ping 我的 URL 时,它不会激活设置 Koala 接入的 cookie 的 Javascript SDK。

    我本可以开发一种不同的身份验证方法,但我的第一次尝试失败了,而是在我的控制器中设置了以下行:

    rescue_from NoMethodError, :with => :redirect_to_signin
    

    我认为这也会捕获随机错误,例如过期或销毁的 cookie 以及各种其他不可预见的事件,并将用户重定向到登录页面。

    欢迎对以上内容提出任何想法。

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多