FQL 查询和 Graph API 对象访问的区别

Posted

技术标签:

【中文标题】FQL 查询和 Graph API 对象访问的区别【英文标题】:Diffence between FQL query and Graph API object access 【发布时间】:2010-05-05 16:11:05 【问题描述】:

使用 Facebook Graph API (http://graph.facebook.com/btaylor) 访问用户数据与使用 Graph API 对同一用户 (https://api.facebook.com/method/fql.query?query=QUERY) 进行 FQL 查询有何区别。

另外,有谁知道 Facebook 开发者工具包(用于 ASP.NET)使用的是哪一个?

我问的原因是因为我试图在登录用户在我的网站上开始 Facebook Connect 会话后访问他们的生日,但是当我使用工具包时它不会返回它。但是,如果我为该用户对象手动调用 Graph API,它会返回它。我的工具包调用可能有问题。我想我可能需要包含会话密钥,但我不确定如何获取它。这是我正在使用的代码:

_connectSession = new ConnectSession(APPLICATION_KEY, SECRET_KEY);
        try
        
            if (!_connectSession.IsConnected())
            
                // Not authenticated, proceed as usual.
                statusResponse = "Please sign-in with Facebook.";
            
            else
            
                // Authenticated, create API instance
                _facebookAPI = new Api(_connectSession);

                // Load user
                user user = _facebookAPI.Users.GetInfo();

                statusResponse = user.ToString();

                ViewData["fb_user"] = user;

            
        
        catch (Exception ex)
        
            //An error happened, so disconnect session
            _connectSession.Logout();
            statusResponse = "Please sign-in with Facebook.";
        

【问题讨论】:

我也对两者之间的差异感兴趣。 老话题——但这是我的 .02:Open Graph 抽象出 Facebook SQL 中的“sql”,并且在设计上要慢得多。如果您熟悉 SQL,FBSQL 就是对 FB 已经定义的列的简单 SQL 查询,& 让您可以更好地控制返回的内容。对返回内容的更多控制、更精细的查询和更小的数据集可为您带来性能改进的好处,并且始终比 Open Graph(用于进行简单查询)更快。开放图将更适合需要大量连接和子查询的复杂查询 - 您应该首先避免。 【参考方案1】:

Graph API 和 FQL 的相似之处在于它们都访问相同的底层 Facebook 对象:统称为“社交图谱”的节点。 Graph API 是访问这些对象的一种简单、统一且相当直接的方法。如果您确切地知道自己在寻找什么,那么 Graph API 就是一种获取它的简单方法。

另一方面,FQL 是一种查询语言(如 SQL)。它允许您搜索使用简单、直接的 Graph API 无法(或复杂)找到的图形对象。

FQL 与 Graph API 相比的另一个重要功能是能够将多个查询批处理到一个调用中(这可以为您节省很多多部分查询的往返时间)。

最终,Graph API 似乎更直接地表示了社交图谱中“幕后”发生的事情,因此我发现尽可能使用它更简单。但是,如果我的 Graph API 请求变得非常长或难以理解(或者任何时候我需要对社交图谱进行多个相关查询),这表明是时候切换到 FQL。

【讨论】:

【参考方案2】:

我无法获得我正在寻找的生日和其他信息的原因似乎是因为我没有可以请求的所有扩展权限的完整列表。我终于在http://developers.facebook.com/docs/authentication/permissions(包括user_birthday)找到了这份名单。

如果有人有关于 FQL 与图形对象问题的信息,我仍然会对此感兴趣。虽然我认为它们基本上是一样的。

【讨论】:

他们访问相同的东西,但实际上完全不同。见我上面的回答。【参考方案3】:

看起来已经改变了它(又是一次)。因为您使用的是 facebook connect,所以您可以请求权限以向您提供所需的信息,例如用户的生日,例如:

<fb:login-button perms="email,user_birthday"></fb:login-button>

更多信息:

http://developers.facebook.com/docs/guides/web#login

【讨论】:

以上是关于FQL 查询和 Graph API 对象访问的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用 Graph API 只结交已婚朋友

Facebook Graph API:提要中缺少帖子

Office Graph API 和查询 Office Graph 之间的区别

Facebook Graph API:如何获得在线朋友/或最后 X 分钟活跃

使用 Facebook Graph API 按位置搜索公共事件

如何使用 Graph API 获取未读消息?