ios - 使用 Swift 创建 Facebook Open Graph 对象

标签 ios facebook facebook-graph-api swift facebook-opengraph

我正在使用 Facebook iOS SDK 创建一个自定义故事,该应用程序是用 Swift 编写的。我的代码基于他们的文档示例 https://developers.facebook.com/docs/ios/open-graph#createobject .

一切顺利,直到我必须创建 FBGraphObject

NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];

在 Swift 中,我将这个 block 重写为:

var object = FBGraphObject.openGraphActionForPost()

// specify that this Open Graph object will be posted to Facebook
object.setObject(true, forKey: "provisionedForPost")

// for og:title
object.setObject(description["title"]!, forKey: "title")

// for og:type, this corresponds to the Namespace you've set for your app and the object type name
object.setObject("bppridereport:ride", forKey: "type")

// for og:description
object.setObject(description["description"]!, forKey: "description")

FBRequestConnection.startForPostOpenGraphObject(object, completionHandler: { (connection:FBRequestConnection!, result:AnyObject!, error:NSError!) -> Void in

    if error == nil {
        let objectId = result["id"]

      } else {
          NSLog("Error posting the Open Graph object to the Object API:", error);
      }

  })

这给了我一个错误:NSMutableDictionary is not identical to FBOpenGraphObject,这是有道理的,阅读文档 FBOpenGraphObject 只是一个装扮的 NSMutableDictionary 所以我将对象转换为 FBOpenGraphObject 解决错误

var object = FBGraphObject.openGraphActionForPost() as FBOpenGraphObject

问题是,当我现在编译它并运行应用程序时,它在这一行崩溃了……我很困惑。很少有关于 Facebook SDK 的 Swift 实现的内容。为什么会发生这种情况的任何想法?

最佳答案

我在对 Facebook 的调用中将类型转换为 FBGraphObject。

我在你的例子中使用了不同的调用,因为我已经用元数据设置了 html 页面,但是你的例子的重构如下:

var object = FBGraphObject.openGraphActionForPost()

// Code to create object metadata omitted //

FBRequestConnection.startForPostOpenGraphObject(object as FBGraphObject, completionHandler: {
(connection:FBRequestConnection!, result:AnyObject!, error:NSError!) in
    if error == nil {
        let objectId = result["id"]
    } else {
       NSLog("Error posting the Open Graph object to the Object API:", error)
   }
})

希望对您有所帮助。

关于ios - 使用 Swift 创建 Facebook Open Graph 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072495/

相关文章:

ios - 删除行时,编辑操作部分忽略 UITableViewRowAnimation 设置

ios - Sqlite3 不建表,也不报错

Facebook 页面插件未在 Vue Js 中加载

java - Facebook requestNewPublishPermissions 的回调 - Android

Facebook Instagram Graph Api 获取带有用户名的标签

iOS:在旋转期间保持 View 居中在屏幕上

ios - 我的 iOS 游戏在 GSM 上运行良好,但无法在 CDMA 上运行

php - 显示新消息通知

android - 使用azure移动服务添加facebook权限?

python - Facebook 测试用户未显示电子邮件地址