ЦЕЛЬ:
Я создаю приложение для фотографий / развлечений для 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>