如何发现哪些朋友接受Facebook API邀请?
Facebook API v2.0引入了invitable_friends
边缘 。
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。 相反,它是一个邀请令牌 ; 该令牌作为to
参数的值传递给Requests对话框 。
邀请令牌作为名为id的字段的值返回给每个朋友对象,是唯一的(每个用户和每个游戏)可变长度的string。 邀请令牌有效期届满,并可能在游戏会话之间更改。 因此,不build议caching这些结果,或尝试将它们分配给给定的人。
friends
边缘现在只返回已经使用该应用程序的朋友
我的问题是,我现在无法交叉引用哪个朋友,哪些朋友已经接受。
以前,在我给他们发送一个邀请的时候,我会保存一个好友ID,并且在稍后的时间点,与玩游戏的朋友列表进行核对,但是现在不可能有几个原因:
- 邀请令牌不存在于朋友边缘
- 而且它是dynamic的
- 正常的用户标识不存在于invitable_friends边缘。
- 我可以使用用户名作为键,但这不是唯一的。
实际问题: 有没有人devise出一种方式,从被邀请的用户那里接受邀请?
TLDR:保存这些朋友请求的实际邀请的响应
据我了解你提供的参考资料 :
您可以开始请求invite_token
,我认为您已经能够做到这一点。
作为回答,你可以通过invitable_friend
得到这个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); });
看看与:你可以把邀请令牌在那里。
现在,响应如下所示:
{ request: 'REQUEST_OBJECT_ID' to:[array of USER_IDs] }
你有你的用户ID。
如果你走得更远,要么需要更多的信息,要么想看看谁接受了,那么你有两个select:
- 你可以检查用户标识是否授权游戏
- 当新用户login时,您可以要求这个新用户的所有请求。 在那里你可以跟踪谁邀请他。
GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]
- 您保存所有数据(在TLDR中陈述),并检查每次新用户join您的游戏,如果新的用户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" }
为了防止这种情况,您可以指定接收用户的用户标识,并从接收方获得相同的答案: https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token={APP_ACCESS_TOKEN}
: https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token={APP_ACCESS_TOKEN}