Ссылки на действия Facebook Connect. Почему они добавляют параметр QueryString к нашим URL? - PullRequest
0 голосов
/ 29 июля 2010

У меня есть приложение Facebook Connect (IFrame, внешний сайт).

Когда я отправляю сообщение на стену пользователя, используя Старый JavaScript API (FB.Connect.streamPublish), я указываю ссылки действий, как это делают многие люди.

Вот JSON для моей ссылки действия:

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

Теперь мы используем перезапись URL-адресов на моем веб-сайте, поэтому все URL-адреса хороши и полезны (т.е. нет .ASPX).

Теперь по какой-то причине ссылка, отображаемая на стене пользователя, выглядит так:

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

Конечно, это 404 '.

Похоже, что для всех приложений Facebook (не только для меня) этот способ заключается в том, что для любой пользовательской ссылки на действие Facebook автоматически добавляет ref = nf к URL-адресу.

Для других частей поста (ссылки, изображения и т. Д.) Они этого не делают.

Таким образом, единственное, что я могу сделать, это изменить ссылку на URL без RESTful:

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

Тогда будет отображаться:

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

Что работает.

Но WTF, почему они это делают? И могут ли они не дать этим приложениям с перезаписью URL опции , чтобы они не предоставили это?

Я надеялся сохранить все URL чистыми и переписанными.

EDIT:

Мое плохое, правила регулярных выражений в переписывающем устройстве URL были неправильными. Burn.

1 Ответ

0 голосов
/ 30 июля 2010

PEBKAC (существует проблема между клавиатурой и стулом).

Мои правила регулярных выражений для этой конкретной страницы были недостаточно надежными.

Для всех, кого это волнует, вот что у меня было:

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

Вот что я изменил:

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

Кроме того, мне было интересно, почему в Fiddler я получаю все эти 404 ошибки, поступающие из Facebook.

Оказывается, я регистрировал 'xd_receiver.htm' неправильно:

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

Так что на ВСЕХ страницах Facebook искала файл относительно пути.

Это должно было быть:

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

Никогда не забывайте «/». =) * +1022 *

...