Вызов API Koala Facebook иногда возвращает ошибку 500

По сути, я пытаюсь получить фотоальбомы пользователей из 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 часа.

Я не могу понять, почему эта ошибка появляется у некоторых пользователей, поскольку в большинстве случаев она работает нормально? Любые идеи или предложения по улучшению этого кода будут высоко оценены. Спасибо.


person ralphos    schedule 14.11.2012    source источник


Ответы (1)


Я столкнулся с той же проблемой, и, похоже, это происходит, если в ответе нет фото / обложки.

, 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
person ddresch    schedule 23.05.2013