0

我有一个 Facebook Connect 应用程序(IFrame、外部网站)。

当我使用旧的 JavaScript API FB.Connect.streamPublish

这是我的操作链接的 JSON:

[{ 'text':'Do something on my site', 'href':'http://www.mysite.com/somerestfulpath' }]

现在,我们在我的网站上使用 URL 重写,所以 URL 都很好而且 RESTful(即没有 .ASPX)。

现在,由于某种原因,在用户墙上呈现的链接是:

http://www.mysite.com/somerestfulpath?ref=nf

当然这是404'ing。

对于所有 Facebook 应用程序(不仅仅是我的)似乎都是这种方式,对于任何自定义操作链接,Facebook 都会自动将ref=nf附加到 URL。

对于帖子的其他部分(链接、图像等),他们不这样做。

所以我唯一能做的就是将链接更改为非 RESTful URL:

http://www.mysite.com/pages/actualpagewhichidontwantuserstosee.aspx

然后它将呈现:

http://www.mysite.com/pages/actualpagewhichidontwantuserstosee.aspx?ref=nr

哪个有效。

但是WTF,他们为什么要这样做?他们能不能不给那些带有 URL 重写的应用程序一个选项,让他们不提供这个选项?

我希望保持 URL 的干净和重写。

编辑:

我的错,URL 重写器的正则表达式规则不正确。烧伤。

4

1 回答 1

0

PEBKAC(键盘和椅子之间存在问题)。

我对这个特定页面的正则表达式规则不够万无一失。

对于任何关心的人,这就是我所拥有的:

<rewrite url="^~/somepage$" to="~/Pages/SomePage.aspx" processing="stop" />

这就是我将其更改为:

<rewrite url="^~/somepage(.*)" to="~/Pages/SomePage.aspx" processing="stop" />

另外,我想知道为什么在 Fiddler 中我会收到来自 Facebook 的所有这些 404 错误。

原来我注册'xd_receiver.htm'错了:

FB.Init('myapikey', 'xd_receiver.htm')

所以在所有页面上,Facebook 都在寻找相对于路径的文件。

它必须是:

FB.Init('myapikey', '/xd_receiver.htm')

永远不要忘记'/'。=)

于 2010-07-30T00:59:58.403 回答