ios - 关于 Facebook 相册中已有照片的 Facebook Open Graph 故事?

标签 ios facebook facebook-graph-api ios6

目标:

我正在构建一个 iOS 照片/娱乐应用程序,并且有一个非常简单的目标:将照片上传到 Facebook,然后使用 Facebook 的开放图谱故事分享照片(例如“[用户] [verbed] 使用 [应用程序名称]”)。

(事实证明 iOS 6 的 SLComposeViewController 本身不允许这样做。我希望它会。嘘。)

情况:

我没有强大的网络空间 - 并且也不想要一个 - 因此,如果用户点击时间线(等)中的开放图谱故事,我宁愿简单地链接回 Facebook 上的照片。

我可以上传照片 - 并检索其 URL - 但我无法让开放图谱故事发挥作用!这就是我所在的位置:

照片上传至 Facebook 相册:确定

我使用 FBRequestrequestForPhotoUpload iOS SDK(最新版本截至 9 月 17 日)中的方法并记录 photopost结果使用 batchEntryName .这基本上直接来自 FB Open Graph 教程。

照片 URL 检索:确定

这里我使用FBRequestrequestForGraphPath方法 - 基本上还是按照 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:typewebsite (这一定是从FB页面上的静态OG标签衍生出来的?),所以OG故事失败了。

我想你可以在这里得到我的 OG 结果(从调试器):

https://graph.facebook.com/120073804807493

(我也尝试将整个 OG 请求返回为 og:url ,但这只是链接回我的网络服务器上的空白页面 - 请参阅下面的 Repeater.php 代码。)

那么……我能做什么呢?我怎样才能让它发挥作用?当我构建的只是一个 iOS 应用程序并且我只想发布到用户的相册时,我真的需要启动整个 Web 属性来托管和显示图像吗?!

更多信息:这里是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>

最佳答案

经过大量研究,遗憾的是,我认为不可能将您上传到 Facebook 的照片用作开放图谱对象。 Facebook 的页面根本没有足够的动态标记,无法让其中一张照片成为开放图谱对象(这是可以理解的),所以我们只能靠自己了……;)

(尽管我强烈怀疑在 iOS 6.1 或 7.0 中他们会允许这样的事情;我必须想象随着 SLRequest 的流行,这种需求会猛增......)

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

  • 您可以通过直接上传和专辑名称来模仿开放图谱故事,从而进行一些巧妙的操作。请在此处查看我的其他 Stack 帖子,了解其教程中未涵盖的一些技术内容:Facebook iOS SDK: Cannot specify an album using FBRequest's requestForUploadPhoto:
  • 如果您在网络开发方面拥有中等技能,请不要忽视 Facebook 的 Heroku 集成(您可以从 Facebook 应用程序设置页面访问它)- https://developers.facebook.com/apps
  • 如果您要处理大量照片,我的上帝 Parse 已经给了我们一个开源的 Instagram 克隆 - https://parse.com/anypic - 是的,这就是您看到的 WEB 和 iPHONE 源代码!将其放在您的 Heroku 服务器上并开始修补,如果您想要一些大规模的社交内容,那么您就在用油脂做饭。

关于ios - 关于 Facebook 相册中已有照片的 Facebook Open Graph 故事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481402/

相关文章:

iOS Swift 3-UIDatePicker

objective-c - 一周内所有 NSDate 的数组

iphone - 如何在 iPhone 应用程序上获得黑色状态栏?

objective-c - Facebook API - 63 构建错误

facebook-graph-api - 如何使用 FB 沙盒帐户创建广告图像

objective-c - 标签栏项目的标题不显示

ios - 获取我和另一个用户之间的 Facebook 共同好友

ios - 覆盖 UIActivityViewController 以切换到 Facebook 应用程序(用于 Open Graph 故事)

php - Facebook API 权限的 fatal error

Android 如何使用 facebook 3.0 sdk 点赞帖子