1

经过长时间的任务(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 操作并且它失败了。并且数据没有保存在数据库中。

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

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

4

1 回答 1

2

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 和帐户以区分请求与帐户
于 2012-12-05T22:21:02.853 回答