如何获取带有图片和视频以及文字的Facebook Feed?

时间:2019-01-23 14:02:46

标签: ios swift facebook-graph-api facebook-sdk-4.0

我想在ios应用中获取记录的用户供稿,我尝试使用图api,图api返回数据,结果很好。 但是当我将数据交叉检查到Facebook用户页面上的实际Facebook Feed时,发现了一些问题:

  1. 如果帖子仅包含文本,而不是消息键上的文本,以及帖子ID,
  2. 如果帖子中包含带有图片/视频的文字,则消息键上会出现文字
  3. 如果帖子中只有图像/视频,而消息键不来。

我知道消息键仅用于描述/文本,但仅用于图像?有没有办法获得与Facebook上显示的内容完全相同的提要。

我尝试下面的代码:

用于登录

FBSDKLoginManager().logOut()
    FBSDKLoginManager().logIn(withReadPermissions: ["email", "public_profile", "user_posts"], from: self) { (result, error) in
        if error != nil {
            print("failed to start graph request: \(String(describing: error))")
            return
        }
       // self.getPosts()//old
        self.getFBPost()
    }

对于getFBPost

 func getFBPost() {
    FBSDKGraphRequest(graphPath: "/me/feed", parameters: nil)?.start(completionHandler: { (fbConnectionErr, result, error) in
       // print(fbConnectionErr)
        print(result)
        //print(error)
    })
}

这样的回应:

{
  "data": [
    {
      "message": "https://medium.com/frame-io-engineering/huge-images-small-phone-15414b30d39e",
      "created_time": "2018-12-03T13:59:01+0000",
      "id": "68288174406_653966194"
    },
    {
      "created_time": "2018-12-01T13:43:02+0000",
      "id": "68288174406_6528518443724"
    },
    {
      "message": "I love my Mom",
      "created_time": "2018-11-30T13:27:38+0000",
      "id": "68288174406_652289420323"
    }

}

您可以看到第二个帖子只有ID和创​​建时间,而我们在Facebook页面上检查的是带有图片的帖子,而第三个帖子则有视频,但只有来自图API的文本

请指导我做错了什么?或者我应该怎么做才能在json formate中获取整个提要数据,就像在Facebook上一样?

2 个答案:

答案 0 :(得分:1)

您不会在API调用中要求任何字段,因此只能获取默认字段。它称为“声明性字段”(/me?fields=message,created_time,...),并随附v2.4:

答案 1 :(得分:0)

我已阅读@luschn共享的赠予文档。并得到了我忘记了@luschn建议我的声明性字段的解决方案,现在下面给出了解决方案:只需更改图api,

 FBSDKGraphRequest(graphPath: "/me/feed", parameters: ["fields":"created_time,attachments,type,message"])?.start(completionHandler: { (fbConnectionErr, result, error) in
     print(fbConnectionErr)
     print(result)
     print(error)
        let re = result as? [String: Any]
        let data = re?["data"] as! [[String: Any]]
        for dict in data {
            print(dict)
        }
    })

OR  如果您有页面ID,则可以在下面的网址中使用get API。

https://graph.facebook.com/(api_version)/(page_id)?fields=feed {created_time,attachments,message}&access_token =(token_id)