我想使用facebook graph 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";
}
有人可以帮我纠正这个...我的代码无效......
答案 0 :(得分:4)
参考: https://developers.facebook.com/docs/reference/api/
使用API网址:
https://graph.facebook.com/me/groups
获取用户的群组。在上面的链接中,将me/
更改为用户的FB ID。您还必须传入访问令牌。
回复将采用JSON编码。使用json_decode
将其解码为PHP关联数组。迭代它并检查你想要的组。
Graph 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
答案 1 :(得分:3)
正在研究这个并发现这是谷歌的第一个答案,但答案似乎很麻烦所以我挖得更深一些。
我发现的最快的答案并不需要遍历所有的群组&#39;成员使用FQL
。
SELECT gid, uid FROM group_member WHERE uid = (user id) AND gid = (group id)
这将返回一个空的数据&#39;对象或数据&#39;具有UID和GID的对象。
它(从我到目前为止看到的)也不需要user_groups
权限。
这个FQL查询为我返回:
{
"data": [
{
"gid": "282374058542158",
"uid": "551549780"
}
]
}
答案 2 :(得分:2)
在Graph API v2.4之后,这似乎不可能,因为Facebook决定不允许它: https://developers.facebook.com/docs/apps/changelog#v2_4
&#34;不推荐使用user_groups权限。开发人员可以继续使用user_managed_groups权限来访问某人是其管理员的组。仍然可以通过/v2.4/{user_id}/groups边缘访问此信息,该边缘在v2.4中仍然可用。&#34;
它还声明&#34;从2015年10月6日起,在所有以前的API版本中,这些端点将返回空数组。&#34;但在我看来它仍然适用于v2.2&amp; V2.3。