如何通过CREATE_CONTENT权限过滤Facebook页面?

时间:2013-12-19 08:46:24

标签: c# asp.net facebook api facebook-graph-api

我有以下图谱API调用:me/accounts?fields=access_token,name,id,perms我用来从用户那里获取页面令牌。

现在我想通过perms="CREATE_CONTENT"对此进行过滤。 如何过滤此图谱API调用?

我正在使用C# Facebook.net SDK。目前我使用此代码:

client.Post("me/accounts", new { fields = "access_token,name,id,perms" });

2 个答案:

答案 0 :(得分:0)

你不能在API中直接过滤它,但是从c#中很容易做到 - 你从Facebook.JSONObject响应中得到ICollection,所以你可以使用linq来过滤它 - {{ 3}}对如何实现这一点有很好的解释。

答案 1 :(得分:0)

开场警告:我知道C#,但我经常使用其他编程语言的Facebook工作。

Facebook有许多"Publish Permissions"作为其扩展权限的一部分。我假设您已经从用户那里请求了一项或多项这些权限。 (我没有看到create_content列出的内容;这是我提及它的唯一原因。)例如,我们请求您create_event的许可用户。

尝试将Facebook用户ID累积到列表中,然后使用Facebook SDK客户端发出FQL查询以获得您感兴趣的权限:

List<int> facebookUserIds = new List<int>(1, 2, 3);
var query = string.Format("SELECT uid, create_event FROM permissions WHERE uid IN ({})", string.Join(",", facebookUserIds));

dynamic parameters = new ExpandoObject();
parameters.q = query;
dynamic results = client.Get("/fql", parameters);

您收到的回复将包含这样的属性(此处为JSON格式):

{
  "data": [
    {
      "uid": 1, 
      "create_event": 1
    },
    {
      "uid": 2, 
      "create_event": 0
    }
    {
      "uid": 3, 
      "create_event": 0
    }
  ]
}

当然,0表示权限被拒绝,而1表示您为使用Facebook API进行身份验证所使用的应用ID而授予的权限。

注意:如果用户之前已对您的应用进行了身份验证(最基本级别的权限),则只会在回复中返回用户;但这不应成为一个问题。