使用Facebook Graph API(http://graph.facebook.com/btaylor)访问用户数据和使用Graph API对同一用户(https://api.facebook.com/method/fql.query?query=QUERY)进行FQL查询之间的区别是什么。
另外,有谁知道Facebook Developer Toolkit(用于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.";
}
答案 0 :(得分:8)
Graph API和FQL类似,因为它们都访问相同的底层Facebook对象:统称为“社交图”的节点。 Graph API是一种访问这些对象的简单,统一且相当直接的方式。如果您确切知道自己在寻找什么,那么Graph API就是一种简单的方法。
另一方面,FQL是一种查询语言(如SQL)。它允许您使用简单的直接Graph API搜索无法(或复杂)查找的图形对象。FQL相对于Graph API的另一个重要功能是能够将多个查询批量处理到一个调用中(这可以为多部分查询在往返时节省批次)。
最终,Graph API似乎更直接地表示了社交图中“幕后”的内容,因此我发现在可以使用时更简单。但是如果我的Graph API请求变得非常长或难以理解(或者我需要对社交图进行多个相关查询),那就是时候切换到FQL了。
答案 1 :(得分:0)
这似乎是我无法获得生日和我正在寻找的其他信息的原因是因为我没有可以请求的所有扩展权限的完整列表。我终于在http://developers.facebook.com/docs/authentication/permissions(包括user_birthday)找到了列表。
如果有人有关于FQL与图形对象问题的信息,我仍然对此感兴趣。虽然我认为它们基本上是一回事。
答案 2 :(得分:0)
看起来已经改变了它(是的)。因为您正在使用Facebook连接,您可以要求权限为您提供例如用户生日所需的信息:
<fb:login-button perms="email,user_birthday"></fb:login-button>
更多信息: