【问题标题】:How to filter Facebook pages by CREATE_CONTENT permission?如何通过 CREATE_CONTENT 权限过滤 Facebook 页面?
【发布时间】:2014-01-07 17:51:38
【问题描述】:

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

现在我想用perms="CREATE_CONTENT" 过滤这个。 如何过滤这个 Graph API 调用?

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

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

【问题讨论】:

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


    【解决方案1】:

    开场白:我确实了解 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 进行身份验证的 App ID 的权限。

    注意:只有在用户之前已经对您的应用进行了身份验证(具有最基本的权限级别)时,才会在响应中返回用户;但这应该不是问题。

    【讨论】:

      【解决方案2】:

      您不能直接在 API 中过滤它,但从 c# 中很容易做到 - 您从 Facebook.JSONObject 响应中获得 ICollection,因此您可以使用 linq 过滤它 - @987654321 @ 对如何实现这一点有很好的解释。

      【讨论】:

      • 如果这样做,您将无法看到页面访问令牌。
      猜你喜欢
      • 2012-05-07
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多