0

目标:

我正在构建一个 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:typeof 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>
4

1 回答 1

1

经过大量研究,遗憾的是,我认为您上传到 Facebook 的照片无法用作 Open Graph 对象。Facebook 的页面根本没有足够动态地标记,以至于他们的一张照片成为 Open Graph 对象(可以理解),所以我们靠我们自己.. ;)

(虽然我强烈怀疑在 iOS 6.1 或 7.0 中他们会允许这样的事情;我不得不想象随着 SLRequest 的流行,这种需求会飙升......)

对将来可能遇到此问题的其他人的想法:

  • 您可以通过直接上传和专辑名称来做一些聪明的事情来模仿 Open Graph 的故事。在此处查看我的其他 Stack 帖子,了解他们的教程中未涵盖的一些技术内容:Facebook iOS SDK:无法使用 FBRequest 的 requestForUploadPhoto 指定相册:
  • 如果您在 Web 开发方面有中等水平的技能,请不要忽视 Facebook 的 Heroku 集成(您可以从您的 Facebook 应用设置页面访问它)- https://developers.facebook.com/apps
  • 如果您特别要处理很多照片,我的上帝 Parse 用他们开源的 Instagram 克隆给了我们一个祝福 - https://parse.com/anypic - 是的,那是 WEB 和 iPHONE你看到的源代码!把它放到你的 Heroku 服务器上并开始修修补补,如果你想要一些大规模和社交的东西,你就是在用油脂做饭。
于 2012-09-19T04:58:28.990 回答