Mik*_*din 6 ruby ruby-on-rails heroku facebook-graph-api
我整天都在解决这个问题,可能真的需要一些投入.
我有一个在Heroku Cedar上运行的Rails应用程序(3.1.3),尝试使用gem fb_graph(2.4.0)发布一些Facebook Open Graph操作.
这是我的代码.
begin
app = FbGraph::Application.new(ENV['facebook_app_id'])
me = FbGraph::User.me(user.facebook_access_token)
logger.info "Facebook: User #{user.name} reviewing game #{game_url(review.game)}"
action = me.og_action!(
app.og_action(:review),
:game => game_url(review.game),
:content => review.review,
:rating => review.rating
)
rescue Exception => exc
logger.error "Failed to publish review #{review.id} to facebook #{user.facebook_auth}"
logger.error "Facebook error msg: #{exc.message}"
end
Run Code Online (Sandbox Code Playgroud)
如果我转到我的应用程序中将尝试运行此代码的页面,它将失败并显示以下消息.
FbGraph::InvalidRequest (Exception :: Could not retrieve data from URL.)
Run Code Online (Sandbox Code Playgroud)
但是,如果我在哪里打开一个Heroku控制台,heroku run console
并手动输入代码,它就完美无缺.
我的第一个想法是应该game_url(review.game)
归咎于哪里,但在添加日志消息后,我确信它会返回正确的URL.并且,因为当我通过heroku控制台手动运行它时整个工作正常,它确认了URL可访问并传递所请求的数据.
任何反馈或经验都非常感谢.
Mik*_*din 11
解决了!
真的很傻.我的Heroku应用程序中只有一个web dyno.由于我唯一的网络dyno正在进行Facebook API调用,因此没有响应Facebook回调的动态.你需要至少2才能让它发挥作用.
代码在heroku控制台中工作的原因仅仅是因为web dyno没有忙于处理我的请求.
我可能会在将来将该代码推送到工作队列,因为它看起来更合适,并让工作人员dyno处理Facebook发布.