【问题标题】:Rails koala "error unsupported get request" after long task - calling FB graph API长时间任务后Rails考拉“错误不支持获取请求” - 调用FB图形API
【发布时间】:2012-12-05 18:18:45
【问题描述】:

经过长时间的任务(14 秒,甚至超过 600 次 Facebook 调用)后,我的应用返回 500 内部服务器错误,描述如下:

Koala::Facebook::APIError (GraphMethodException: Unsupported get request.) 

我做的是这样的:

@FBGraph = Koala::Facebook::API.new
tud = MyUsers.all
tud.each do |user|

    graph = @FBGraph.get_object(user.fb_user_id)
    picture = @FBGraph.get_picture(user.fb_user_id)
    thisTud = MyUsers.find(user.id)
    thisTud.name = graph["name"]
    thisTud.url = graph["link"]
    thisTud.url_pic = picture

    if thisTud.save
        puts "Saved!"
    else
        puts "Error"
    end
end

我收到(在终端上)所有"Saved!",但在检索数据后,它会自动执行 mysql 操作并且失败。并且数据没有保存在数据库中。

正如this post 中所建议的,我已将@FBGraph = Koala::Facebook::API.new 放在一个新线程中,但没有任何变化。

注意:当我用更少的用户做同样的操作时,一切都很好。

【问题讨论】:

标签: ruby-on-rails-3 facebook-opengraph koala koala-gem


【解决方案1】:

hellvinz 怎么说是 facebook 错误。

我现在找到了一个似乎可行的解决方法:

改变这个

graph = @FBGraph.get_object(user.fb_user_id)

到这里

graph = @FBGraph.get_object("#{user.fb_user_id}?fields=id,name,username,picture,link")

明确声明字段似乎可以解决问题。

如果这还不够,还有 2 个技巧可以解决问题:

  1. 延迟一段时间后(例如一小时后)再次调用,并且仅调用未完成的请求
  2. 创建多个 fb 应用 ID 和帐户以区分请求与帐户

【讨论】:

  • 这是一个 facebook 错误。如果您执行的调用次数超过 API 允许的次数,您将收到不同的错误消息。
猜你喜欢
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多