当前位置: 首页 > 面试题库 >

Facebook Graph API获得所有用户及其状态

商宏爽
2023-03-14
问题内容

我正在使用Facebook Graph API,我想知道是否可以通过一次呼叫获得所有用户及其当前状态的列表?

我基本上希望获得与https://graph.facebook.com/me/friends相同的结果,但每个对象都包含当前状态。

谢谢你的帮助!

编辑:

这里有一些澄清。如果https://graph.facebook.com/me/friends?access_token=...得到我这个:(又是我所有朋友的清单)

{
  "data": [
    {
      "name": "Foo",
      "id": "1"
    },
    {
      "name": "Bar",
      "id": "2"
    },
    {
      "name": "Foo Bar",
      "id": "3"
    },
    {
      "name": "Bar Foo",
      "id": "4"
    }
  ]
}

什么URL或FQL将使我得到这个信息:(又是我所有朋友及其身份的列表)

{
  "data": [
    {
      "name": "Foo",
      "id": "1"
      "status": "This is my current status!"
    },
    {
      "name": "Bar",
      "id": "2"
      "status": "This is my current status!"
    },
    {
      "name": "Foo Bar",
      "id": "3"
      "status": "This is my current status!"
    },
    {
      "name": "Bar Foo",
      "id": "4"
      "status": "This is my current status!"
    }
  ]
}

我只想打一个电话,因为与我不同的是,大多数人有100多个朋友,我不想为了获得状态而打100多个电话。


问题答案:

尽管新的Batch
API
可以满足您的要求,但我无法使其正常运行。看来它仍然是越野车。

现在,使用来实现此目的fql.multiquery,这是一个简单的示例:

<?php
$app_id = "APP_ID";
$app_secret = "APP_SECRET"; 
$my_url = "REDIRECT_URL";

$code = $_REQUEST["code"];

if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
  . $app_id . "&redirect_uri=" . urlencode($my_url);

echo("<script> top.location.href='" . $dialog_url 
  . "'</script>");
}

$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) 
. "&client_secret=" . $app_secret 
. "&code=" . $code;

$access_token = file_get_contents($token_url);

$queries = '{"query1":"SELECT uid,name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1=me())","query2":"SELECT uid,message FROM status WHERE uid IN (SELECT uid FROM #query1)"}';
$multiquery = "https://api.facebook.com/method/fql.multiquery?queries=" . urlencode($queries) . "&format=json&" . $access_token;
$res = json_decode(file_get_contents($multiquery), TRUE);

$final = array();
foreach( $res[1]['fql_result_set'] as $i=>$message_arr ) {
    foreach( $res[0]['fql_result_set'] as $j=>$friend ) {
        if( $message_arr['uid'] == $friend['uid'] ) {
            $friend['message'] = $message_arr['message'];
            $final[] = $friend;
            break;
        }
    }
}
print_r($final);
?>

在这里,我们在第一个查询中获取用户ID和名称,并从第二个查询中获取状态消息。
现在,这将在第一个查询或第二个查询中返回更少的结果!因为:

  • 朋友过去30天可能没有发布状态消息,因此该消息不会出现在第二个查询中(第二个查询的结果集较少)。
  • 一个朋友可能在过去30天内发布了多个状态消息(它 应该 全部返回-最多50个!!)我不确定,但是如果是这种情况,则第二个将/应该返回更多结果比第一个 因此,我仅收到 一条 消息(请注意break)。


 类似资料:
  • 但是响应只返回用户和他们的一些属性,而不是我在门户中看到的所有属性。 进行REST调用以获取所有用户及其字段/属性的正确URI是什么?

  • 我搜索了以下内容:,但没有找到任何内容。 JDA版本:

  • 我有3个表:,, 我需要获得一个特定组中的用户列表,所有用户都需要包含作为成员的所有组。 我试过这样的东西: 但这将返回组中id为SOMEID所有用户,且仅连接用于搜索的一个组,即使一个用户是多个组的成员。 多谢了。

  • 问题内容: 我有一个具有@Embedded类Profile的User类。如何给Profile实例引用其所有者User类? 问题答案: 假设JPA而不是严格地处于hibernate状态,则可以通过应用getter / setter对而不是私有成员本身来实现。 但是,我想问的是,在这种情况下,嵌入式实体是否就是您想要的,而不是@OneToOne关系,或者只是将Profile类“展平”到User中。@E

  • 我想知道是否有可能得到一个活动程序的列表(特别是“事件”类型),然后列出这些程序的成员及其在其中的当前状态。 基本上,我希望复制程序视图顶层的“成员”选项卡,以便从外部查看我们的活动流程,但添加额外功能,使非marketo用户能够更改这些潜在客户的状态(即从注册- 据我所见,目前REST API不可能做到这一点(?),而且我不太清楚在SOAP API中使用什么调用。。。

  • 我正试图从一张有超时的地图中得到所有的结果。 我尝试使用,但由于使用了函数,没有成功。 我会很高兴,如果有人可以看看哦,我的代码,并建议如何做正确的。 非常感谢。