考拉Facebook api电话有时会返回500错误

时间:2012-11-14 08:13:52

标签: ruby-on-rails facebook koala

基本上,我正试图从Facebook上抓取用户的相册并用封面照片显示它们。

在我的用户控制器中,我有:

def facebook(token)
  @facebook ||= Koala::Facebook::API.new(token)
end

def get_photo_albums
  albums = self.facebook.get_connection(uid, "albums")
  albums.map { |h| { id: h["id"], name: h["name"], count: h["count"], cover_photo: self.facebook.get_picture(h["cover_photo"]) } }
end

此代码在大多数情况下都能正常运行,但偶尔会出现以下错误:

Koala::Facebook::APIError (HTTP 500: Response body: {"error":{"message":"No node specified","type":"Exception"}}):
app/models/user.rb:79:in `block in albums'
app/models/user.rb:79:in `map'
app/models/user.rb:79:in `albums'

我的应用程序在画布上,每次用户访问应用程序时都会通过解析signed_request来获取新的访问令牌,该应用程序应该持续2个小时。

我无法弄清楚为什么这个错误出现在某些用户身上,因为它在大多数情况下都能正常工作?任何改进此代码的想法或建议都将非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,如果响应中没有photo / cover_photo,似乎就会发生。

, cover_photo: fb_cover_photo(h) } }

我使用了这个救援声明:

def fb_cover_photo(photo)
    begin
      self.facebook.get_picture(photo["cover_photo"])
    rescue Exception => e
      nil
    end     
end