我想检查,如果用户是用Facebook图形API一组的成员...
我有这个:
$group = file_get_contents("https://graph.facebook.com/177129325652421/members?access_token=XXXXXXXX");
$group = json_decode($group);
$checkuser = $group->data;
并检查用户是否是一个构件通过使用他facebook id
和in_array()
if(in_array($_GET["fid"],$checkuser)){
echo "yes";
} else {
echo "no";
}
有人可以帮我解决这个,请...我的代码是不工作...
参考: https://developers.facebook.com/docs/reference/api/
使用API网址:
https://graph.facebook.com/me/groups
要获得用户的组。 在上面的链接,改变me/
用户的FB ID。 你也必须通过在一个访问令牌。
该答复将JSON编码。 使用其解码json_decode
到PHP关联阵列。 遍历并检查所需的组。
该图形API并没有立刻返回所有组。 您必须使用分页链接在每个响应结束时获取更多,或使用limit
参数要求,因为你需要尽可能多的。
下面的代码示例将发布组的ID是你的一部分
<?php
$url = "https://graph.facebook.com/me/groups?access_token=AAAAAAITEghMBAMDc6iLFRSlVZCoWR0W3xVpEl1v7ZAxJRI3nh6X2GH0ZBDlrNMxupHXWfW5Tdy0jsrITfwnyfMhv2pNgXsVKkhHRoZC6dAZDZD";
$response = file_get_contents($url);
$obj = json_decode($response);
foreach($obj->data as $value) {
echo $value->id;
echo '<br>';
}
/* to check for existence of a particular group
foreach($obj->data as $value) {
if ($value->id == $yourID) {
//found
break;
}
//not found. fetch next page of groups
}
*/
PS -如果运行上面的代码给你一个错误,指出Could not find wrapper for "https"
,您需要取消注释/添加PHP扩展extension=php_openssl.dll
一直在寻找这个,发现这是在谷歌第一的答案,但答案似乎是麻烦了,所以我挖了一个深一点。
最快的答案我发现它不需要通过所有群组成员的迭代使用FQL
。
SELECT gid, uid FROM group_member WHERE uid = (user id) AND gid = (group id)
这或者返回一个空“数据”对象,或与UID和GID一个“数据”对象。
它还(从我看的更远),不需要user_groups
许可。
https://developers.facebook.com/tools/explorer?fql=SELECT%20gid%2C%20uid%20FROM%20group_member%20WHERE%20uid%20%3D%20551549780%20AND%20gid%20%3D%20282374058542158
这FQL查询返回我:
{
"data": [
{
"gid": "282374058542158",
"uid": "551549780"
}
]
}
这似乎不是图形API V2.4之后是可能的,因为Facebook决定禁止它: https://developers.facebook.com/docs/apps/changelog#v2_4
“在user_groups权限已废弃。开发人员可以继续使用user_managed_groups权限访问该组一个人的管理者,这些信息是通过/v2.4/{user_id}/groups边缘依然有效静止访问V2.4“。
它也指出:“从2015年起10月6日,在所有以前的API版本,这些端点将返回空数组。” 但在我看来,它仍然适用于V2.2和V2.3。