0

Facebook Connect アプリケーション (IFrame、外部 Web サイト) があります。

古い JavaScript API ( FB.Connect.streamPublish) を使用してユーザーのウォールに投稿すると、多くの人がそうであるように、アクション リンクを指定します。

アクションリンクの JSON は次のとおりです。

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

現在、私の Web サイトで 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 に答える