Facebook Открыть График от Rails Heroku - PullRequest
6 голосов
/ 27 марта 2012

Я боролся с этой проблемой весь день, и мне действительно может понадобиться какой-то вклад.

У меня есть приложение Rails (3.1.3), работающее на Heroku Cedar, пытающееся опубликовать некоторые действия Facebook Open Graph с помощьюgem fb_graph (2.4.0).

Это мой код.

begin
    app = FbGraph::Application.new(ENV['facebook_app_id'])
    me = FbGraph::User.me(user.facebook_access_token)

    logger.info "Facebook: User #{user.name} reviewing game #{game_url(review.game)}"

    action = me.og_action!(
        app.og_action(:review),
        :game => game_url(review.game),
        :content => review.review,
        :rating => review.rating
    )
rescue Exception => exc
    logger.error "Failed to publish review #{review.id} to facebook #{user.facebook_auth}"
    logger.error "Facebook error msg: #{exc.message}"
end

Если я перейду на страницу своего приложения, которая попытается запустить этот код, произойдет сбой с помощьюследующее сообщение.

FbGraph::InvalidRequest (Exception :: Could not retrieve data from URL.)

Но, если я открою консоль Heroku, heroku run console и введу код вручную, она прекрасно работает.

Первая мысль была о том, что game_url(review.game) где винить, но после добавления сообщения журнала я уверен, что оно возвращает правильный URL.И, поскольку все работает, когда я запускаю его вручную через консоль heroku, он подтверждает, что URL-адрес должен быть доступен, и доставляет запрошенные данные.

Любая обратная связь или опыт с этим очень приветствуются.

Ответы [ 3 ]

11 голосов
/ 28 марта 2012

Решил!

Действительно глупо на самом деле. У меня был только один веб-динамо в моем приложении Heroku. Так как мой единственный веб-динамо делал вызов API Facebook, не было динамо, чтобы отвечать на обратный вызов Facebook. Вам нужно как минимум 2, чтобы заставить это работать.

Причина, по которой код работал в консоли heroku, заключалась просто в том, что веб-dyno не был занят обработкой моего запроса.

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

1 голос
/ 02 апреля 2012

Альтернативой второму dyno может быть попытка Unicorn - это позволит вашему приложению обслуживать второй вызов, пока первый заблокирован.

В этих статьях приведены некоторые полезные сведения о начале работы с Unicorn:

0 голосов
/ 28 марта 2012

Следующая ссылка, по-видимому, указывает на то, что это связано с тайм-аутом, хотя фактического решения пока не дано. facebook "не удалось получить данные с URL"

Вы можете также отслеживать ответы по вышеуказанной ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...