История Facebook Open Graph о фотографии, уже находящейся в альбоме Facebook?

ЦЕЛЬ:

Я создаю приложение для фотографий / развлечений для iOS, и у меня очень простая цель: загрузить фотографию в Facebook, а затем поделиться фотографией с помощью историй Facebook Open Graph (например, «[пользователь] [verbed] фотография, используя [имя приложения] ").

(Оказывается, SLComposeViewController в iOS 6 не позволяет этого изначально. Я надеялся, что так и будет. Бу.)

СИТУАЦИЯ:

У меня нет надежного веб-пространства - и я не хочу его - поэтому, если пользователь нажимает на историю Open Graph на своей временной шкале (и т. Д.), Я бы предпочел просто вернуться к фотографии в Facebook.

Я могу загрузить фотографию и получить ее URL-адрес, но я не могу заставить историю Open Graph работать! Вот где я:

Загрузить фото в альбом Facebook: ОК

Я использую метод FBRequest requestForPhotoUpload из iOS SDK (последняя версия от 17 сентября) и записываю результат photopost с помощью batchEntryName. Это в основном взято прямо из учебника FB Open Graph.

Получение URL фотографии: ОК

Здесь я использую метод requestForGraphPath FBRequest - опять же в основном в соответствии с руководством по FB OG. Вот пример полученного мной URL:

https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg

Опубликовать историю Open Graph: НЕ РАБОТАЕТ

При этом я создаю HTTP-запрос OG следующим образом:

https://<MY_SITE>.herokuapp.com/repeater.php?fb:app_id=<MY_FB_APP_ID>
&og:type=<APP_NAMESPACE>:photo
&og:title=a+rad+photo
&og:description=%22a+rad+photo%22
&og:image=https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg
&og:url=https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg
&body=a+rad+photo

Но это не работает. Проблема, с которой я сталкиваюсь, может быть очевидна для ветеранов: изображение FB возвращает og:type из website (это должно быть получено из статических тегов OG на странице FB?), И поэтому история OG терпит неудачу.

Думаю, вы можете получить мои результаты OG здесь (из отладчика):

https://graph.facebook.com/120073804807493

(Я также попытался вернуть весь свой запрос OG как og:url, но он просто ссылается на пустую страницу на моем веб-сервере - см. код Repeater.php ниже.)

Итак ... что я могу с этим поделать? Как я могу заставить это работать? Неужели мне действительно нужно запускать весь веб-ресурс только для размещения и отображения изображений, когда все, что я создаю, - это приложение для iOS, и все, что я хочу сделать, это разместить в фотоальбоме пользователя ?!

Дополнительная информация. Вот источник файла Repeater.php (см. Учебное пособие по FB OG), если он важен:

<?php
function curPageURL() {
 $pageURL = 'http://';
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>

<html>
  <head prefix="og: http://ogp.me/ns# product: http://ogp.me/ns/product#">
    <meta property="fb:app_id" content="<?php echo strip_tags($_REQUEST['fb:app_id']);?>">
      <meta property="og:url" content="<?php echo strip_tags($_REQUEST['og:url']);?>">
      <meta property="og:type" content="<?php echo strip_tags($_REQUEST['og:type']);?>">
      <meta property="og:title" content="<?php echo strip_tags($_REQUEST['og:title']);?>">
      <meta property="og:image" content="<?php echo strip_tags($_REQUEST['og:image']);?>">
      <meta property="og:description" content="<?php echo strip_tags($_REQUEST['og:description']);?>">
  </head>
    <body>
      <?php echo strip_tags($_REQUEST['body']);?>
    </body>
</html>

person toblerpwn    schedule 18.09.2012    source источник


Ответы (1)


После долгих исследований, к сожалению, я не думаю, что можно использовать фотографии, которые вы загружаете на Facebook, в качестве объектов Open Graph. Страницы Facebook просто недостаточно динамически размечены для того, чтобы одна из их фотографий была объектом Open Graph (понятно), поэтому мы сами по себе ..;)

(Хотя я сильно подозреваю, что в iOS 6.1 или 7.0 они позволят что-то подобное; я должен представить себе, что спрос на это стремительно растет, когда в моду входит SLRequest ..)

Идеи для тех, кто может столкнуться с этим в будущем:

  • Есть несколько умных вещей, которые вы можете сделать с прямыми загрузками и названиями альбомов, чтобы имитировать историю Open Graph. Ознакомьтесь с моим другим сообщением о стеке здесь, чтобы узнать о некоторых технических материалах, которые не были рассмотрены в их руководствах: Facebook iOS SDK: невозможно указать альбом с помощью requestForUploadPhoto:
  • Если у вас есть хотя бы умеренные навыки веб-разработки, не упускайте из виду интеграцию Facebook с Heroku (вы можете перейти к ней со страницы настроек приложения Facebook) - https://developers.facebook.com/apps
  • Если вы имеете дело, в частности, с большим количеством фотографий, мой бог Парс благословил нас клоном Instagram, который они предоставили в открытом доступе - https://parse.com/anypic - да, вы видите ОБЕ исходный код WEB И iPHONE! Бросьте это на свой сервер Heroku и начните возиться, и вы готовите с жиром, если хотите что-то масштабное и социальное.
person toblerpwn    schedule 19.09.2012