Facebook Connect 操作链接 - 为什么他们将 QueryString 参数添加到我们的 URL 中?

发布于 2024-09-11 22:00:51 字数 1364 浏览 2 评论 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 重写器上的正则表达式规则不正确。烧伤。

I have a Facebook Connect application (IFrame, external website).

When i post to the user's wall using the Old JavaScript API (FB.Connect.streamPublish), im specifying action links, as many people do.

Here's the JSON for my action link:

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

Now, we use URL Rewriting on my website, so the URL's are all nice and RESTful (i.e. no .ASPX).

Now, for some reason, the link that gets rendered out on the user's wall is:

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

Of course this is 404'ing.

It seems to be this way for all Facebook apps (not just mine), that for any custom action link, Facebook will automatically append ref=nf to the URL.

For other parts of the post (links, images, etc), they don't do this.

So the only think i can do is change the link to the un-RESTful URL:

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

Then it will render:

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

Which works.

But WTF, why are they doing this? And can they not give those applications with URL rewriting an option for them not to supply this?

I was hoping to keep the URL's all clean and rewritten.

EDIT:

My bad, the regex rules on the URL rewriter wasnt correct. Burn.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身软味 2024-09-18 22:00:51

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')

永远不要忘记“/”。 =)

PEBKAC (Problem Exists Between Keyboard And Chair).

My regex rules for this particular page was not foolproof enough.

For anyone that cares, this is what i had:

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

This is what i changed it to:

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

Also, i was wondering why in Fiddler i was getting all these 404 errors coming from Facebook.

Turns out i was registering the 'xd_receiver.htm' wrong:

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

So on ALL pages, Facebook was looking for the file relative to the path.

It needed to be:

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

Never forget the '/'. =)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文