facebook graph api检查用户是否是使用PHP的组的成员

时间:2012-05-01 02:59:34

标签: facebook facebook-graph-api facebook-php-sdk facebook-group

我想使用facebook graph api ...

检查用户是否是群组成员

我有这个:

$group = file_get_contents("https://graph.facebook.com/177129325652421/members?access_token=XXXXXXXX");
$group = json_decode($group);

$checkuser = $group->data;

并使用他的facebook idin_array()

检查用户是否是会员
if(in_array($_GET["fid"],$checkuser)){

echo "yes";

} else {

echo "no";
}

有人可以帮我纠正这个...我的代码无效......

3 个答案:

答案 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权限。

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"
    }
  ]
}

答案 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。