Facebook:链接请求的发件人给它的收件人?

时间:2012-05-14 13:24:14

标签: facebook facebook-graph-api

使用“请求”对话框时,Facebook会发出如下通知:

enter image description here

我希望实现的目的是让用户点击上面显示的请求链接,并在我们的应用程序上显示“随机用户邀请您...”消息。

然而,当点击该链接时Facebook似乎没有通过“随机用户”的ID传递到应用程序。链接访问的URL看起来像:

http://apps.facebook.com/randomcomp/?fb_source=notification&request_ids=350578327437399,350578327437399&ref=notif&app_request_type=user_to_user&notif_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

2 个答案:

答案 0 :(得分:1)

您可以向请求添加一些数据,以便在处理请求时可以将其与其他请求区分开来。

可以使用应用请求和用户请求发送数据,参数名称为“data”。 例如,在Requests Dialog的指南中,您可以在文档(几乎)末尾的属性表中看到它,它说:

  

可选,您可以传递用于跟踪的其他数据。这将会   存储为创建的请求对象的一部分。最大长度是   255个字符

Social Channels文档中还有一些关于它的信息,以及关于Upgrade to Requests 2.0的官方博客文章中的(php)用法示例。

我希望这就是你要找的东西。


修改

当您发送请求时,您知道谁正在发送它吗?它是登录用户,因此您可以将用户id / name / etc放入请求的data参数中。 然后,当有人点击请求时,通过facebook传递给您的ID获取请求,并从数据中提取发件人的用户ID。

正如文档所述,您可以使用255个字符,并且可以随意执行任何操作,甚至可以将对象序列化为该参数并在以后对其进行反序列化。

答案 1 :(得分:0)

事实证明,事实上这根本不可能。

如下图所示,该链接可以显示多个用户:

enter image description here

这就是传递多个请求ID的原因,而发件人的ID不是。