首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过Facebook API发现哪些朋友接受了邀请?

如何通过Facebook API发现哪些朋友接受了邀请?
EN

Stack Overflow用户
提问于 2014-06-27 20:17:44
回答 1查看 3K关注 0票数 50

Facebook API v2.0引入了invitable_friends edge

GET请求对此边缘的响应示例如下:

{
  "data": [ 
    {
      "id": "AVkgK9fLFxasdvXNbDV_gYogR6lXa9SKLnH...", 
      "name": "Anita Sujarit", 
      "picture": {
        "data": {
          "is_silhouette": false, 
          "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t1.0-1/c0.0.50.50/p50x50/1470158_10201991701127909_302023572_t.jpg" 
        }
      }
    }
}

仔细看看那个ID,它不是一个普通的Facebook用户id。相反,它是一个Invite Token;这个令牌作为to参数的值传递给Requests Dialog

在每个朋友对象上返回的invite令牌是一个唯一的(每个用户和每个游戏)可变长度的字符串,它是名为id的字段的值。invite令牌是到期的,并且可以在游戏会话之间改变。因此,不建议缓存这些结果,或者尝试将它们分配给给定的人。

friends edge现在只返回已经使用过该应用程序的朋友

我的问题是,我现在无法交叉参考我邀请了哪些朋友,哪些朋友已经接受了。

以前,我会在发送邀请时存储一个好友id,并在稍后将其与玩游戏的朋友列表进行核对,但现在这是不可能的,原因有几个:

  • invite令牌不在好友边缘
    • 及其动态And上

  • 普通用户id不在invitable_friends边缘上。
  • 我可以使用用户名作为密钥,但这不是唯一的。

实际问题:有没有人设计出一种方法,从被邀请的用户中确定哪些用户接受了邀请?

EN

回答 1

Stack Overflow用户

发布于 2017-04-29 00:22:53

TLDR:保存来自实际的邀请这些朋友请求的响应

据我所知,您提供的reference

您可以开始请求invite_token,我假设您已经能够做到这一点。

作为回答,您将根据invitable_friend得到以下结果

{
  "id": "AVlzYTkXshfBqLe58zR9tY5dZ7L0wltTUkWKT0Z5V87zkwv-39...", // Invite Token
  "name": "Guy Cross",
  "picture": {
    "data": {
      "is_silhouette": false,
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/623782_622770420_2109148508_q.jpg"
    }
  }
}

该页面在前面提到了如何处理请求:

FB.ui({method: 'apprequests',
  message: 'YOUR_MESSAGE_HERE',
  to: 'USER_ID, USER_ID, INVITE_TOKEN' // It says invite token
}, function(response){
  console.log(response);
});

看一下to的代码行:你可以把invite标记放在那里。

现在,响应如下所示:

{
  request: 'REQUEST_OBJECT_ID'
  to:[array of USER_IDs]
}

这样您就得到了您的用户ids。

如果你需要更多信息,或者想看看谁接受了,那么你有两个选择:

  • 你可以检查用户id是否已经授权了游戏
  • 当新用户登录时,你可以要求这个新用户的所有请求。在那里你可以追踪邀请他的人。GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]
  • you保存所有数据(在TLDR中说明),并检查每次有新用户加入游戏时,新用户id是否在您提到的请求列表中。

要查看是谁邀请了他,可以用接收用户的http://graph.facebook.com/{REQUEST_OBJECT_ID}?access_token=USER_ACCESS_TOKEN检查request_object_id,得到的响应如下:

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "to": {
    "name": "RECIPIENT_FULL_NAME",
    "id": "RECIPIENT_USER_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

如果您使用来自发送者的用户访问令牌,则会得到以下内容:

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

为了防止出现这种情况,您可以指定接收用户的用户id,并从接收方获得相同的答案:https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token={APP_ACCESS_TOKEN}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24451650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档