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

Posted

技术标签:

【中文标题】如何通过 CREATE_CONTENT 权限过滤 Facebook 页面?【英文标题】:How to filter Facebook pages by CREATE_CONTENT permission? 【发布时间】: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" );

【问题讨论】:

【参考方案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 @ 对如何实现这一点有很好的解释。

【讨论】:

如果这样做,您将无法看到页面访问令牌。

以上是关于如何通过 CREATE_CONTENT 权限过滤 Facebook 页面?的主要内容,如果未能解决你的问题,请参考以下文章

vue项目权限管理

java web的用户角色权限管理是如何实现的?

JavaEE---过滤器Filter ,过滤器Filter的实现与部署,编码案例+权限案例

粗颗粒度权限控制(使用过滤器完成)

验证操作过滤器或授权过滤器的用户权限?

一个网站的权限管理,用过滤器还是拦截器更好