Встроенные в Facebooker методы извлечения данных возвращают ошибку "Нет информации для этого пользователя"
Я просмотрел архив сообщений 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 ответ
Я делал это намного сложнее, чем должно было (и неправильно использовал 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