2

在我当前的 .NET 和基于 FBML 的 facebook 应用程序中,我有一些如下所示的代码:

<fb:request-form
        action="http://mysite.com/InvitesSent.aspx"
        method="POST"
        invite="true"
        type="SomeType"
        content="Here is an invite to <fb:req-choice url='http://mysite.com?<%=Params %>' label='My site' />">
    <fb:multi-friend-selector
            max="20"
            actiontext="Invite your friends!"
            showborder="false"
            rows="4"
            bypass="cancel"
            email_invite="false"
            exclude_ids="" /> 
</fb:request-form>

这会在我的网站上弹出多朋友选择器,用户从中选择一些朋友并按下“发送邀请”,此时用户将被重定向到http://mysite.com/InvitesSent.aspx

在另一端,邀请的接收者会看到带有“接受”按钮的通知。当按下按钮时,facebook 会立即重定向到我的网站

http://www.facebook.com/l.php?u=http%3A%2F%2Fmysite.com%3F ...

这是 facebook 的外部链接重定向的东西。此重定向包括我在 fb:req-choice url 属性中提供的参数。

我的问题是:由于 FBML 即将停产,如何在 Javascript SDK 中实现此行为?

我可以使用 FB.ui 和 apprequest 发送通知,但我似乎无法像在 FBML 中那样将参数附加到 URL。我需要这个,因为我希望奖励邀请者,为此我需要能够跟踪个人请求。

这在新的 SDK 中是否有可能?该文档令人困惑,有时会区分请求和邀请,有时则不会。老实说,我不确定是否有区别,我只是坚持 FBML 中的线索,例如'invite="true"',这可能有助于我找到解决方案。

4

1 回答 1

3

这已经不可能了,这从开发者文档中的以下段落中可以看出

用户响应

如果用户在请求上单击“接受”,他们将被发送到发送请求的应用程序的画布 URL。此 URL 将包含一个附加参数 request_ids,它是用户尝试操作的请求 ID 的逗号分隔列表:

http://apps.facebook.com/[app_name]/?request_ids=[request_ids] 作为最佳实践,当用户登陆您的应用程序时,您应该阅读未完成的应用程序请求。如果用户点击了来自仪表板的通知或请求,您将通过 URL 获得请求 ID。然后当用户处理请求时,您应该通过 Graph API 删除它们。

当用户在 Facebook 的 API 中单击接受时,请求 2.0 请求不会被删除。您必须使用 Graph API 读取并清除它们。

所以你可以尝试的是:

  1. 当用户向她的朋友发送邀请/请求时,读取 javascript 回调中的 request_ids,并使用 ajax 将它们存储到您的数据库中(以便您可以调用InvitesSent.aspx)。

  2. 当新用户到来时,读取 request_id 并奖励发送请求的用户。

如果您可以告诉我,当用户从外部网站发送请求并且另一个用户接受时会发生什么,使用新的 JS SDK,我可以更具体地使用解决方案。基本上,如果您密切关注浏览器 url,您就会知道 facebook 如何重定向接受的新用户。在文档中,仅针对画布应用程序提到了接受,因此我不确定外部站点会发生什么。如果你测试它,我们可以弄清楚。
编辑:
正如 Igy 所建议的,我想接受请求将始终重定向到画布。

于 2011-10-27T10:38:49.823 回答