0

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

在此处输入图像描述

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

但是,当单击该链接时,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,以便当他们点击时我可以在应用程序中提供一个很好的“随机用户邀请您...”消息?

编辑:

事实证明这是不可能的 - 请参阅我的答案

4

2 回答 2

1

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

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

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

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

我希望这就是你要找的。


编辑

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

正如文档所述,您有 255 个字符可供使用,并且您可以做任何您想做的事情,您甚至可以将对象序列化为该参数并在以后反序列化它。

于 2012-05-14T13:39:47.990 回答
0

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

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

在此处输入图像描述

这就是为什么传入多个请求 ID 而不是发送者 ID 的原因。

于 2012-05-14T15:04:10.100 回答