代码之家  ›  专栏  ›  技术社区  ›  Sazid Iqabal

如何获取包含图片和视频以及文本的Facebook订阅源?

  •  0
  • Sazid Iqabal  · 技术社区  · 7 年前

    我想在iOS应用程序中获取记录的用户源,我已经尝试使用graph api,graph api返回数据,这很好。 但当我将数据交叉检查到Facebook用户页面上的实际Facebook订阅源时,发现了一些问题:

    1. 如果post只有文本,而不是消息键上的文本,以及post id,
    2. 如果Post的文本中只有图像/视频,则消息键上会显示文本
    3. 如果Post只有图像/视频,则消息键不会出现。

    我知道消息键只用于描述/文本,而用于图像?是否有任何方法可以获得与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页面上检查这篇文章,这篇文章有图片,第三篇文章有视频,但只有来自graph api的文本。

    请告诉我怎么了?或者我该怎么做才能让整个feed数据以json格式显示,就像在facebook上一样?

    2 回复  |  直到 7 年前
        1
  •  1
  •   andyrandy    7 年前

    您不会在API调用中要求任何字段,因此只会得到默认字段。它被称为“声明性字段”。( /me?fields=message,created_time,... )随附2.4版:

        2
  •  0
  •   Sazid Iqabal    7 年前

    我已经阅读了@luschn共享的give doc。得到了解决方案,我忘记了@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)
            }
        })
    

    或 如果您有页面ID,可以使用下面的URL来访问get api。

    https://graph.facebook.com/(api_version)/(page_id)?fields=feed 创建时间、附件、消息&访问_令牌=(令牌_ID)