4

我想检查用户是否是使用 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";
}

有人可以帮我纠正这个问题...我的代码不起作用...

4

3 回答 3

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

于 2012-05-01T03:04:37.903 回答
3

正在调查这个并发现这是谷歌的第一个答案,但答案似乎很麻烦,所以我挖得更深一些。

我发现的最快答案不需要遍历所有组的成员使用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"
    }
  ]
}
于 2014-05-01T21:48:25.037 回答
2

在 Graph 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。

于 2015-11-19T16:47:06.210 回答