如何通过 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 页面?的主要内容,如果未能解决你的问题,请参考以下文章