1

Facebook と統合しようとしている音楽発見 Web アプリを作成しました。フロントエンドは基本的に、HTML5 の Canvas を使用したインタラクティブなエクスペリエンスです。つまり、すべてが 1 つのページ内に存在します。

Facebookのようなボタンを表示するために、キャンバス上に存在するhtmlコードがいくつかあります。このいいねボタンは、キャンバス アプリで現在表示されている曲に対応しています。jquery を使用して、 の を動的に変更していますhreffb:like、これは問題なく動作します。同様に、を使用してサイトの URL を変更していますwindow.history.pushState()

これは正常に機能しますが、いいねボタンをクリックしたときにユーザーのフィードに出力されるメッセージは、常にロードされた元のページ (曲がロードされていない webapp) に関係します。そのため、OpenGraph を使用して上記のメッセージを変更することを検討し始めました。

ボタンのようにFacebookのページによると:

Facebook はいつ私のページをスクレイピングしますか?

Facebook は、ページをサイト内に表示する方法を把握するために、ページをスクレイピングする必要があります。

Facebook は 24 時間ごとにページをスクレイピングして、プロパティが最新であることを確認します。Open Graph ページの管理者が Like ボタンをクリックしたとき、および URL が Facebook URL Linter に入力されたときにも、ページがスクレイピングされます。Facebook は、URL のキャッシュ ヘッダーを観察します。「Expires」と「Cache-Control」を優先順に調べます。ただし、より長い時間を指定しても、Facebook は 24 時間ごとにページをスクレイピングします。

上記のように、曲が変更されるたびに (サイトをリロードせずに) 動的に変更される独自の URL を作成しています。だれかがこれらの URL のいずれかを要求した場合に、返された HTML ファイルに問題の曲に対応するメタ タグが含まれるように、サーバーを比較的簡単に再コーディングできます。私がこれを行うふりをして、これらすべての URL を facebook にカールするスクリプトを書きましょう。ユーザーが特定の曲に対応する私の webapp の [いいね] ボタンをクリックした場合、メッセージは以前に Facebook によってスクレイピングされたメタ タグに対応しますか、それとも現在受信している誤解を招く通常のメッセージにすぎませんか? ?

ベスト、
サミ

PS 誰もこれに対する答えがわからない場合は、明日すべてをコード化してお知らせします。

PPS 関連するメモとして、OpenGraph を使用していいねボタンのクリックのテキストを変更する場合、scope="public_actions"属性をfb:likeHTML コードの要素に設定する必要があるかどうかは誰にもわかりませんか?

4

1 に答える 1

1

あなたがしていることに問題はありません.2つのことをするだけです:

  1. サーバーが、ユーザーが共有できる URL ごとに正しい og メタ データを返すようにします。

  2. いいねボタンのコンテナ データを動的に変更した後、FB.XFBML.parseメソッドを呼び出す必要があります。hrefプロパティのみを変更した場合にどの程度うまく機能するかわかりません。domから like ボタンを完全に削除し、新しい fb:like を挿入してからFB.XFBML.parseを呼び出すことをお勧めします。

于 2012-05-16T08:08:49.257 に答える