iOS 上 Facebook 页面的 Graph API 排序

Posted

技术标签:

【中文标题】iOS 上 Facebook 页面的 Graph API 排序【英文标题】:Sorting Through Graph API of Facebook Page on iOS 【发布时间】:2015-07-17 03:24:08 【问题描述】:

我正在使用:

if ([FBSDKAccessToken currentAccessToken]) 
        [[[FBSDKGraphRequest alloc] initWithGraphpath:@"/v2.3/ID/feed" parameters:nil]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
             if (!error) 
                 NSLog(@"fetched user:%@", result);
             
         ];
       

这给了我一个来自 Facebook 页面的所有数据(我的意思是所有数据)的 JSON 字符串。它给了我帖子、喜欢帖子的人的 ID、每条评论、每个分享的人。我真的只需要帖子本身,它在 JSON 结果中列为“消息”。有什么方法可以在 API 调用中执行此操作,还是必须在之后执行?

另外, 有没有办法让它拉出与每个帖子相关的图片?我知道如何将照片发布到页面,但我只想查看发布到页面的帖子,并让它也拉出图片。

【问题讨论】:

【参考方案1】:

您可以按如下方式过滤掉 Feed 响应

if ([FBSDKAccessToken currentAccessToken]) 
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"/v2.3/ID/feed" parameters:[NSMutableDictionary dictionaryWithObject:@"id, message, link.picture" forKey:@"fields"]]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
         if (!error) 
             NSLog(@"fetched user:%@", result);
         
     ];
   

如您所见,我已经提到了过滤掉所需的信息。注意:您可以根据自己的要求过滤掉一些东西。 请查看以下链接以了解 facebook SDK 上可用的过滤器可能性。https://developers.facebook.com/docs/graph-api/reference/v2.3/user/feed 希望对您有所帮助,不确定您要拉出的图片但可能是 'fields' 中的 'link.picture' 会帮助您获得想要的图片。

【讨论】:

在错误消息Error Domain=com.facebook.sdk.core Code=8 "The operation couldn’t be completed. (com.facebook.sdk.core error 8.)" UserInfo=0x7fb90d82ae20 com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0, com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Syntax error "Expected "(", got end of string" at character 25: id, message, link.picture, 中得到了这个【参考方案2】:

使用

/page_id/feed?fields=id,message

对于 Graph API v2.4,这将是您必须指定每个字段的标准用法。

【讨论】:

有没有办法让它拉出与每个帖子相关的图片?我知道如何将照片发布到页面,但我只想查看发布到页面的帖子,并让它也拉出图片。【参考方案3】:

这个,就是你想要的 NSString "link" 的变量:

if ([FBSDKAccessToken currentAccessToken]) 
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil];
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
         if (!error) 
             NSDictionary *userData = (NSDictionary *)result;
             NSString *facebookID = userData[@"id"];
             NSString *link = userData[@"link"];
             NSString *locale = userData[@"locale"];
             NSString *timezone = userData[@"timezone"];
             NSString *last_name = userData[@"last_name"];
             NSString *email = userData[@"email"];
             NSString *gender = userData[@"gender"];
             NSString *first_name = userData[@"first_name"];

          else if (error) 
             //tbd
         
     ];
 else if (![FBSDKAccessToken currentAccessToken]) 
    //tbd

【讨论】:

以上是关于iOS 上 Facebook 页面的 Graph API 排序的主要内容,如果未能解决你的问题,请参考以下文章

graph.facebook.com 的 DNS 问题

facebook graph Api:在页面上发布:权限问题

facebook graph api - 在页面上获取用户发布的图像

在 iOS 上通过 Facebook Graph API 使用“Like”

使用 facebook graph api 允许更多页面

Facebook Graph C# SDK Ver 6.0:无法在应用页面上创建事件