Использование пакетной API Facebook, чтобы опубликовать ту же фотографию на несколько страниц Facebook

StackOverflow https://stackoverflow.com//questions/11656556

Вопрос

Вот вот что я пытаюсь сделать. Я пытаюсь использовать Batch API Facebook, чтобы опубликовать одну фотографию на несколько страниц Facebook одновременно. Сначала я поставил все в массив (fb_batch), а затем кодируйте его, используя json. Этот метод работает просто для публикации сообщений и ссылок. В примере ниже массив @Pages - это массив страниц Facebook, которые содержат информацию о странице Facebook, включая действительный токен доступа. Я знаю, что токен доступа действительна, потому что в другом месте в программе я могу опубликовать отдельные фотографии, используя этот же токен доступа.

fb_batch = []
top_access_token = nil
@pages.each do |page|
  top_access_token = page.access_token if top_access_token.nil?
  if image.nil?
    fb_batch << {method: 'POST', relative_url: 'me/feed?access_token=' + page.access_token, body: body}
  else
    fb_batch << {method: 'POST', relative_url: 'me/photos?access_token=' + page.access_token, body: body, attached_files: 'file1'}
  end
end

c = Curl::Easy.new('https://graph.facebook.com')
c.multipart_form_post = true
c.verbose = true
post_data = [Curl::PostField.content('access_token', top_access_token), Curl::PostField.content('batch', fb_batch.to_json)]
post_data << Curl::PostField.file('file1', image.image.current_path) if !image.nil?
c.http_post(post_data)
.

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

Ошибка приходит, когда я публикую изображение на несколько учетных записей. Он применит изображение к первому аккаунту на массиве FB_Batch, но все другие учетные записи имеют ошибку. Должен ли я прикрепить изображение отдельно для каждой учетной записи, которую я хочу опубликовать фотографию на каждое изображение, имеющее другое имя? Для меня это означает, что запрос будет огромным, поскольку мне потенциально придется прикрепить одно и то же изображение в 50 раз, если я разместил на 50 аккаунтов.

Вот ответ, который я получаю от Facebook:

[{"код": 200, "заголовки": [{"NAME": «ACCES-CONTROL-PLACE-LOCEGLE», «Значение»: «*»}, {«Имя»: «Cache-Control» , «Значение»: «Частный, NO-CACHE, NO-ALATE, DUST-REVALIDATE»}, {«Имя»: «Соединение», «Значение»: «Закрыть»}, {«Имя»: «Content-Type» , «Значение»: «Text / JavaScript; Charset= UTF-8»}, {"name": "Истекает", "Значение": "SAT, 01 января 2000 00:00:00 GMT"}, {"имя" : «Прагма», «Ценность»: «Без кэш»}], «Тело»: «{\» ID \ ": \" 416193168426655 \ ", \" post_id \ ": \" 159594100753231_416193185093320 \ "}"} {"код": 400, "заголовки": [{"name": "Access-Control-remance-process", "значение": "*"}, {"name": «Cache-Control», «значение» : «No-Store»}, {"name": «Соединение», «Значение»: «Закрыть»}, {«name»: «Тип контента», «Значение»: «Текст / JavaScript; Charset= UTF- 8 "}, {" Имя ":" Истекает "," Значение ":" SAT, 01 января 2000 00:00:00 GMT "}, {" Название ":" Прагма "," Значение ":" Нет-кэш " }, {"name": «WWW-Authentile ™,« Value »:« OAUTH \ »платформа Facebook \" \ "Invalid_request \" \ "(# 1) Неизвестная ошибка произошла \" «}],« Тело »: «{\" Ошибка \ ": {\" Сообщение \ ": \" (№ 1) Неизвестная ошибка произошла \ ", \" Тип \ ": \" oauthException \ ", \" Код \ ": 1}}" }]

Извините, это грязно. Вы можете увидеть, что первый код 200, который успешно публикует изображение и возвращает идентификатор изображения. Второй код - это 400 о том, что произошла неизвестная ошибка. Я предполагаю, что это означает, что он не мог найти изображение или что-то в этом роде. Если я переключаю две аккаунты вокруг в массиве, он будет успешно опубликован на другой аккаунт и не удастся от учетной записи, которая просто удалось.

Спасибо, что прочитал весь путь до конца! Вот твой горшок с золотом ...

Это было полезно?

Решение

Мой ответ несколько коньки отладки вашей проблемы и предлагает возможную альтернативу.Вернуться в прошлом году, Facebook запустил возможность для загрузки фотографий, предоставляя исходный URL вместонеобходимость поставлять мультипартные данные.Поэтому я рекомендую следующий обходной путь:

  1. Загрузить изображение, которое вы хотите использовать для чего-то за пределами CDN Facebook (могут возникнуть проблемы с использованием CDN Media для загрузки в Facebook)
  2. схватить URL-адрес указанного изображения
  3. вместо того, чтобы сделать звонок, вы в настоящее время, упрощайте его на PageID / фотографии? Access_Token= PageToken & URL= URLOFPHOTO

    Это опубликует фотографию непосредственно на временную шкале страницы.Дозирование того, что вызов не должен иметь никакого значения.Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top