如何发现哪些朋友接受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的字段的值在每个朋友对象上返回,是唯一的(每个用户和每个游戏)可变长度的字符串。 邀请令牌有效期届满,并可能在游戏会话之间更改。 因此不建议缓存这些结果,或尝试将它们分配给给定的人。
friends
边缘现在只返回已经使用该应用的朋友
我的问题是,我现在无法交叉引用哪些朋友被邀请,哪些朋友已经接受。
以前,我会在我给他们发送一个邀请时储存一个朋友ID,并且在稍后的时间点,对照玩这个游戏的朋友列表进行检查,但是现在这是不可能的,原因如下:
实际问题: 是否有人设计了一种方法,从邀请的用户那里确定已接受邀请的用户?
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);
});
看看与线to
:你可以把在那里邀请令牌。
现在,响应如下所示:
{
request: 'REQUEST_OBJECT_ID'
to:[array of USER_IDs]
}
你有你的用户ID。
如果你走得更远,要么需要更多的信息,要么想看看谁接受了,那么你有两种选择:
GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]
要检查邀请他的人,您可以使用接收用户的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}
上一篇: How to discover which friends accepted invites with Facebook API?