更新:请参阅底部的解决方案。
我是 Ruby 和 Heroku 开发的新手。我在 Facebook 上部署了一个带有 Heroku/Ruby 托管的应用程序。Heroku 部署的默认 Ruby/FB 应用程序在 Heroku 上运行时运行良好。但是,当我克隆我的 heroku 应用程序以在本地运行时,我开始遇到问题。
第一个问题是通过添加require "rubygems"
到我的 app.rb 的顶部来解决的,然后通过添加set :protection, :except => :frame_options
到 app.rb 来解决 Facebook iFrame 问题。
现在我的问题是,在这些行运行之后,当还没有 access_token 时,@app 为零。
@graph = Koala::Facebook::API.new(session[:access_token])
# Get public details of current application
@app = @graph.get_object(ENV["FACEBOOK_APP_ID"])
这会导致模板渲染因以下错误而中断:
NoMethodError - undefined method `[]' for false:FalseClass:
/Users/todd-chapman/Documents/vivid-winter-3317/views/index.erb:7:in `evaluate_source'
我究竟做错了什么?我是否错过了设置本地开发的步骤?
附加信息:这可能与在我的 Facebook 应用程序中启用沙盒模式有关,以便我可以在没有 SSL 的情况下进行本地开发。
谢谢!
解决方案:
我没有足够的代表在提出问题的 8 小时内回答我自己的问题,所以这是我找到的解决方案。
由于我的 Facebook 应用程序处于沙盒模式以支持非 SSL 开发,因此调用@graph.get_object(ENV["FACEBOOK_APP_ID"])
将不起作用,因为沙盒模式应用程序只能由 Facebook 应用程序管理员访问。因此返回 nil 结果。
长期解决方案是设置 SSL 反向代理,这样我就可以在我的 Facebook 应用程序关闭沙盒模式时进行本地开发。