目标:
我正在构建一个 iOS 照片/娱乐应用程序,并且有一个非常简单的目标:将照片上传到 Facebook,然后使用 Facebook 的 Open Graph 故事分享照片(例如“[user] [verbed] a photo using [app name] ”)。
(事实证明 iOS 6SLComposeViewController
本身不允许这样做。我希望它会。嘘。)
情况:
我没有一个强大的网络空间 - 也不想要一个 - 所以如果用户在他们的时间线(等)中点击 Open Graph 故事,我宁愿简单地链接回 Facebook 上的照片。
我可以上传照片 - 并检索其 URL - 但我无法让 Open Graph 故事工作!这是我所在的位置:
照片上传到 Facebook 相册:好的
我使用iOS SDK 中FBRequest
的 'requestForPhotoUpload
方法(截至 9 月 17 日的最新版本)并photopost
使用batchEntryName
. 这基本上直接来自 FB Open Graph 教程。
照片 URL 检索:好的
在这里,我使用FBRequest
'srequestForGraphPath
方法 - 基本上还是按照 FB OG 教程。这是我检索回来的 URL 示例:
https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg
发布开放图故事:不起作用
有了这个,我构造了一个 OG HTTP 请求,如下所示:
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
of website
(这必须来自 FB 页面上的静态 OG 标签?),因此 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>