Встроенные в Facebooker методы извлечения данных возвращают ошибку «Нет информации для этого пользователя» - PullRequest
1 голос
/ 03 марта 2010

Я просмотрел архив сообщений Facebooker, google и т. Д., Нашел пару сообщений, посвященных этому, и они в основном говорят: «Иди, посмотри на документы Facebook и посмотри, что происходит». Я сделал это, но мне все еще не ясно, что происходит и почему я не могу получить свой профиль или массивы статусов с помощью Facebooker. Я начинаю думать, что прямые вызовы API Facebooker «не работают», и я собираюсь попробовать эквивалентные FQL-запросы.

Я пропускаю какую-то инициализацию пользователя Facebooker или что-то в этом роде? Я посмотрел на источник, и звонки, которые я делаю, кажутся именно тем, что я ищу.

Я получаю сообщение об ошибке: API_EC_INFO_NO_INFORMATION, «Для этого пользователя не было установлено никакой информации». Когда я проверяю свой профиль с помощью FB Tool Console, я вижу свою информацию очень хорошо.

То, что я пытаюсь сделать, это настроить задание beanstalk для извлечения информации о профиле / состоянии FB, например:

sess = Facebooker::Session.create("<key>", "<secret_key>")

# session_key passed to beanstalk as body payload
sess.secure_with! job.body

fbkr_user = Facebooker::User.new(sess.user.id, sess)

puts fbkr_user.get_profile_info.to_s    # info not set error

# same result if I go through the session, or try to get user.statuses
puts sess.user.get_profile_info
puts sess.user.statuses

ОШИБКА:

[..]/gems/facebooker-1.0.62/lib/facebooker/parser.rb:646:in `process':
No information has been set for this user (StandardError)
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/parser.rb:36:in `parse'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/service.rb:66:in `post'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/session.rb:638:in `post_without_logging'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/session.rb:649:in `post'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/logging.rb:20:in `log_fb_api'
       from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/benchmark.rb:308:in `realtime'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/logging.rb:20:in `log_fb_api'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/session.rb:648:in `post'
       from /Users/notbrain/.gem/ruby/1.8/gems/facebooker-1.0.62/lib/
facebooker/models/user.rb:390:in `get_profile_info'
       from app/workers/index_fb_user.rb:23
       from app/workers/index_fb_user.rb:6:in `loop'
       from app/workers/index_fb_user.rb:6
       from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `eval'
       from /Library/Ruby/Gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:
46
       from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
       from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
`require'
       from script/runner:3

1 Ответ

0 голосов
/ 03 марта 2010

Я делал это намного сложнее, чем должно было (и неправильно использовал Facebooker). Объект session.user просто необходимо заполнить перед использованием, нет необходимости использовать внешний / явный Facebooker::User объект.

Файл: приложение / работники / fb_processor.rb:

  beanstalk = Beanstalk::Pool.new([BEANSTALK_HOST])
  beanstalk.watch("index-fb-user")

  loop do
    begin
      session_key = job.body
      sess = Facebooker::Session.create(Facebooker.api_key, Facebooker.secret_key)
      sess.secure_with! session_key

      sess.user.populate
      puts sess.user.inspect

    rescue
      puts "Process FB User Failed: #{e.message}"

    ensure
      puts "Deleting job!"
      sess = nil
      # optional, depends on if job is re-spawned elsewhere if fail
      job.delete

    end
  end
...