Facebook と統合しようとしている音楽発見 Web アプリを作成しました。フロントエンドは基本的に、HTML5 の Canvas を使用したインタラクティブなエクスペリエンスです。つまり、すべてが 1 つのページ内に存在します。
Facebookのようなボタンを表示するために、キャンバス上に存在するhtmlコードがいくつかあります。このいいねボタンは、キャンバス アプリで現在表示されている曲に対応しています。jquery を使用して、 の を動的に変更していますhref
がfb: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:like
HTML コードの要素に設定する必要があるかどうかは誰にもわかりませんか?