【问题标题】:Facebook C# SDK batch request feed with object_id for photo dataFacebook C# SDK 批量请求提要,带有用于照片数据的 object_id
【发布时间】:2013-01-17 04:40:17
【问题描述】:

我正在使用 C# Facebook SDK 向 Facebook 查询 /home 提要,并且提要包含照片。提要中的“图片”链接是低分辨率的,所以我必须从提要中查找照片的“object_id”才能获得高分辨率版本。

这就是我想要完成的事情

  1. 获取 /home 动态
  2. 从 /home 响应中的所有“object_id”中,获取“object_id”

        Common._fb.BatchTaskAsync(new[]{
            new FacebookBatchParameter(HttpMethod.Get, "/me", new Dictionary<string, object> { { "limit", 25 }, {"access_token", Common._fb.AccessToken} }),
            new FacebookBatchParameter("/me/home", new { limit = 25 }) { Data = new { name = "home-feed", omit_response_on_success = false } },
            new FacebookBatchParameter(HttpMethod.Get, "/{result=home-feed:$.data.*.object_id}", new { limit = 25 }),                
            new FacebookBatchParameter("/me/error")});
    

我遇到的问题是 object_id 调用失败并出现以下异常:

{ “错误”:{ “消息”: “(#803)的一些你请求的别名不存在:432468803491390,10151350857109036,388654974561669,197117360426100,443878372332478,445366662199631,457265447662406,475836539118390,474145425981640,363838440380681”,” type":"OAuthException","code":803}} 对象 {Facebook.JsonObject}

第一次调用的数据如下所示:

"type": "photo", "status_type": "shared_story", "object_id": "379861798777414", 

在graph API中,object_id可以这样直接查询:/379861798777414

id": 
"379861798777414", 
  "from": 
{
    "category": 
"Automobiles and parts", 
    "name": 
"Legendary Speed Inc.", 
"id": 
"142234555873474"
  }, 
  "name": 
"FOR SALE:\nClick the link for Price and Info\nhttp://www.legendaryfind.com/cars/pin/38000/", 
  "picture": 
"https://photos-b.xx.fbcdn.net/hphotos-ash4/603137_379861798777414_485849814_s.jpg", 
  "source": 
"https://sphotos-b.xx.fbcdn.net/hphotos-ash4/603137_379861798777414_485849814_n.jpg", 
  "height": 
265, 
  "width": 
400, 
  "images": 
[ 
{
 "height": 1356, 
 "width": 2048, 
"source": "https://sphotos-b.xx.fbcdn.net/hphotos-ash4/s2048x2048/603137_379861798777414_485849814_n.jpg"
} 

我不知道为什么,但我无法像这样从批处理参数中调用 object_id。有点卡在这里。

【问题讨论】:

  • 我已经尝试了大约 25 种不同的方法。图形资源管理器每次都有效,但是在通过 C# sdk 进行批处理时 - 它在查找 object_id 时继续失败。在我收到第一个查询后查找每个单独的 object_id 大约需要 20 秒 - 这不是一个可用的设计。
  • 我尝试的最后一个查询是使用 photo?id=object_id new FacebookBatchParameter(HttpMethod.Get, "/photo", new Dictionary { { "limit", 5 }, { "id ", "{result=home-feed:$.data.*.object_id}" } }), new FacebookBatchParameter("/me/error")});
  • 仍然出现此错误 - [2] = {"error":{"message":"(#803) 您请求的某些别名不存在:10151249151943772,10151182121427056,10151216661474249,1015240878046504, 495832923786389","type":"OAuthException","code":803}}

标签: c# facebook graph batching


【解决方案1】:

发现 FQL 后,图形调用已成为过去。 FQL 的新代码在这方面更快、更高效:

stream = "SELECT post_id, actor_id, created_time, message, attachment FROM stream WHERE filter_key IN ( SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed')", //WHERE source_id = me()
users = "SELECT uid, name from user WHERE uid IN (SELECT actor_id FROM #stream)",
photos = "SELECT images, caption, like_info FROM photo WHERE pid IN (SELECT attachment.fb_object_id FROM #stream)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多