使用“请求”对话框时,Facebook会发出如下通知:
我希望实现的目的是让用户点击上面显示的请求链接,并在我们的应用程序上显示“随机用户邀请您...”消息。
然而,当点击该链接时Facebook似乎没有通过“随机用户”的ID传递到应用程序。链接访问的URL看起来像:
http://apps.facebook.com/randomcomp/?fb_source=notification&request_ids=350578327437399,350578327437399&ref=notif&app_request_type=user_to_user¬if_t=app_request
,其中不包含对发起请求的用户的任何引用。
从应用程序方面来看,似乎没有办法从Facebook获取此信息。当然,您可以获得一个请求列表,但该列表可以包含许多请求的信息,包括来自其他用户的请求以及我们感兴趣的请求,因此在这种情况下它没有用处。例如,这是数据的快照:
{
"data": [
{
"id": "340083146057323_100003817986566",
"application": {
"name": "Random Competition",
"namespace": "randomcomp",
"id": "350578327437399"
},
"to": {
"name": "Hannah Smith",
"id": "100003817986566"
},
"from": {
"name": "Random User",
"id": "100002286042525"
},
"data": "100002286042525",
"message": "Use the app!",
"created_time": "2012-05-14T13:26:30+0000"
}, {
"id": "358318457550141_100003817986566",
"application": {
"name": "Random Competition",
"namespace": "randomcomp",
"id": "350578327437399"
},
"to": {
"name": "Hannah Smith",
"id": "100003817986566"
},
"from": {
"name": "Jane Young",
"id": "100003771838663"
},
"data": "100002286042525",
"message": "Use the app!",
"created_time": "2012-05-14T10:54:25+0000"
}],
}
}
正如您所看到的,data
正在传入,但仍无法将上述链接(对于随机用户)的点击加入到正确的请求中列表;该链接通过两个请求的ID,而不仅仅是随机用户的ID,而链接状态为“随机用户”时,它不会通过标识符。
我错过了什么吗?是否有一种机制不在文档中,可以让我获取“随机用户”ID,这样我可以在应用程序中点击时提供一个不错的“随机用户邀请你...”消息?
修改
事实证明这是不可能的 - 请参阅my answer。
答案 0 :(得分:1)
您可以向请求添加一些数据,以便在处理请求时可以将其与其他请求区分开来。
可以使用应用请求和用户请求发送数据,参数名称为“data”。 例如,在Requests Dialog的指南中,您可以在文档(几乎)末尾的属性表中看到它,它说:
可选,您可以传递用于跟踪的其他数据。这将会 存储为创建的请求对象的一部分。最大长度是 255个字符
在Social Channels文档中还有一些关于它的信息,以及关于Upgrade to Requests 2.0的官方博客文章中的(php)用法示例。
我希望这就是你要找的东西。
当您发送请求时,您知道谁正在发送它吗?它是登录用户,因此您可以将用户id / name / etc放入请求的data参数中。 然后,当有人点击请求时,通过facebook传递给您的ID获取请求,并从数据中提取发件人的用户ID。
正如文档所述,您可以使用255个字符,并且可以随意执行任何操作,甚至可以将对象序列化为该参数并在以后对其进行反序列化。
答案 1 :(得分:0)
事实证明,事实上这根本不可能。
如下图所示,该链接可以显示多个用户:
这就是传递多个请求ID的原因,而发件人的ID不是。