【问题标题】:How do I list my friends using FQL?如何使用 FQL 列出我的朋友?
【发布时间】:2013-03-05 22:26:10
【问题描述】:

我正在尝试使用 Facebook-SDK 6.1.4 版列出我所有朋友的生日 当我使用下面的代码时(即没有 FQL,它运行良好,但我无法获取生日,只有 name 和 id 值)。

 var client = new FacebookClient(access_token);
    dynamic me = client.Get(myusername);
    client.IsSecureConnection = true;
    friendListData = client.Get("/" + me.id + "/friends?fields=name,id");
    JObject job = JObject.Parse(friendListData.ToString());

所以我尝试将代码与 FQL 一起使用,但它引发了异常。

    var client = new FacebookClient(access_token);
    client.IsSecureConnection = true;
    dynamic me = client.Get(myusername);
    //var id = me.id;


    Facebook.JsonObject friendListData = new Facebook.JsonObject();
        try
        {
            friendListData = (Facebook.JsonObject)client.Get("fql",
                new
                {
                    q = new
                    {
                        name = "SELECT name, birthday, email, uid FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday_date != 'null' ORDER BY birthday_date"
                    }
                });
        }
        catch (FacebookOAuthException facebookAuth)
        {
    //"(OAuthException - #102) A user access token is required to request this resource."
        }

我做错了什么?

【问题讨论】:

  • 您的访问令牌是用户访问令牌吗? (顺便说一句,您也可以通过“普通”API 查询获取生日,不一定是 FQL。)
  • 我使用下面的 URL 来生成 access_token。它是一个 APP 访问令牌。 graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID &client_secret=YOUR_APP_SECRET &grant_type=client_credentials
  • CBroe,我认为您为我指明了正确的方向。我需要使用的令牌应该是用户访问令牌,而不是应用访问令牌。

标签: facebook c#-4.0 facebook-c#-sdk facebook-fql


【解决方案1】:

检查是否正在设置 access_token 并打印它,然后在调试器中检查它。

对于 FQL 调用,

这是基于月份内的常用字母,特别是 aeu。从那里可以做 strpos 来匹配这些。

SELECT name, birthday, email, uid FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1 = me()) AND (strpos(lower(birthday),"a") >=0 OR strpos(lower(birthday),"e") >=0 OR strpos(lower(birthday),"u") >=0) ORDER BY birthday_date

这应该取出所有空值,因为 null 不包含任何字母(根据空值的定义,而不是字母本身)

【讨论】:

  • 我在代码中放了一个断点。我可以看到访问令牌。
  • @abhi,回答了一半的问题。不做要求的后半部分。
【解决方案2】:

使用 Windows PowerShell 和http://facebookpsmodule.codeplex.com 非常容易:

导入模块 facebook $FB_DefaultExtendedPermissions += "friends_birthday" 新FBConnection Get-FBFriend -字段名称、生日 |选择姓名,生日

我应该将“friends_birthday”添加到默认权限列表中...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多