Asp.mvc 3 应用程序中的 Facebook api 搜索

Posted

技术标签:

【中文标题】Asp.mvc 3 应用程序中的 Facebook api 搜索【英文标题】:Facebook api search in Asp.mvc 3 app 【发布时间】:2011-12-30 10:18:28 【问题描述】:

已编辑 我在我的 asp.net mvc 3 应用程序中使用图形 api 在 facebook 中搜索用户。

public void AsyncSearch(ICollection<JSonObject> result, string query, string objectType)
    
        var fbClient = new FacebookClient(FacebookTokens.AccessToken);
        var searchUri = string.Format("/search?q=0&type=1, query, objectType);


        var tempResult = (JsonObject)fbClient.Get(searchUri);
        var elements = (JsonArray)tempResult.Values.ToArray()[0];

        elements.ForEach(element =>
                            
                            result.Add(element);
                            );

        var next = (JsonObject)tempResult.Values.ToList()[1];

        while (next.Keys.Contains("next"))
        
        tempResult = (JsonObject)fbClient.Get((string)next["next"]);
            elements = (JsonArray)tempResult.Values.ToArray()[0];
            elements.ForEach(element =>
                                
                            result.Add(element);
                                );

            next = (JsonObject)tempResult.Values.ToList()[1];
        
    

但结果最多包含 600 个对象(每次搜索返回不同数量的对象)。 我认为,例如,如果我在查询参数中输入“anna” - 结果必须超过 10000。 这是为什么?有没有办法通过某个关键字检索所有用户?

【问题讨论】:

名称中包含“USERNAME”的用户数量很容易随时间变化。 “所有用户”是什么意思? 如果我设置 USERNAME,例如,“anna” - 结果是大约 400 个对象。我认为,有更多的用户名为“anna”。 但你也会得到: "paging": "next": ... 你可能会得到更多的结果。您可以将您的请求更改为:“/search?q=USERNAME&type=user&limit=200 -> 并选择您自己的金额.. 我将限制设置为 1000,但仍检索最多 600 个对象。我还检查分页。但我无法让所有用户“安娜”。 【参考方案1】:

出于性能方面的考虑,Facebook 将对他们的结果进行分页。如果您查看 JSON 对象的末尾,应该有一个分页对象,其中包含下一个和上一个链接。因此,要获得所有结果,您需要运行多个查询并将它们聚合起来。

【讨论】:

以上是关于Asp.mvc 3 应用程序中的 Facebook api 搜索的主要内容,如果未能解决你的问题,请参考以下文章

asp.MVC 中的自定义警报消息

将 asp.net WebForms 应用程序中的组合表单/Windows 身份验证迁移到 asp.net MVC 应用程序

ASP.NET 5 MVC 6 中的单选按钮标记帮助程序

从 ASP.net Core 2 MVC 应用程序中的 appSettings.json 存储/检索 ConnectionString

ASP MVC 2 问题 - 尝试在视图中的 for 循环中显示图像

列出 ASP.MVC 中的所有视图