FacebookのOGPデバッガーがログイン必須で自動キャッシュクリア不可になって困った
今日は、Facebook関連の小ネタを2つ。1つはFacebook Debuggerがログイン必要になってしまいOGPキャッシュ自動クリアができなくなったこと、もう1つは、いいね!が一定数を越えるとtitleなどが固定されてしまうという話題です。
2013-12-25 1つ目のFacebookデバッガーの問題、読者さんのヘルプで解決しましたので、その方法を追記しました。
FacebookのOGPデバッガーがログイン必須に
FacebookのOGPデバッガー(オブジェクト デバッガ-)がログイン必須になってしました。いつごろからなのかは把握できていません。
- Debugger - Facebook Developers
https://developers.facebook.com/tools/debug/
このツール、本来はWebページなどに記述しているOGPをFacebookがどう認識しているかをチェックするためのものなのですが、これを通すと、Facebook側のOGPキャッシュがクリアされるという効果がありました。
そのため、一度Webページを公開したあとにOGP(タイトルとかアイコンとか)を変えた場合、このデバッガーで対象URLをチェックすると、変更を反映できたんですね。
公開予定日時やURLを事前に筆者さんにお伝えしたときに、うっかりと公開前のURLにFacebookのクローラがアクセスしてしまう場合があります。すると、非公開状態なのでFacebookはページにアクセスできず、OGPを認識しません。一度その状態になると、そのページが公開された後にシェアしようとしてもも、OGPが空になってしまいます(というかURLしか出ない)。
なのでWeb担では、記事の公開処理時に、対象URLを指定したFacebookデバッガーのURLに自動的にアクセスする仕組みを作っていました。事前に何があっても公開直後にOGPキャッシュをクリアするというわけですね(一時期はFacebookのドキュメントでもこうした自動化について記述されていました)。
しかし、気がつくと、デバッガーを使うのにFacebookログインが必要になってしまっていたのです。
これ……やっぱりサーバー側でFacebookのログイン情報を持ってログイン状態でデバッガーにアクセスさせるしかないんでしょうか。どうにも解決策が見つからず、困っています。だれか、APIでうまく処理する方法とかご存じないでしょうか?
2013-12-25 追記
motooLogueさんにヒントを頂き、解決しました。
APIの「https://graph.facebook.com/?scrape=true&id=URL」にPOSTメソッドでアクセスすると、再クロールしてくれるんですね(またはデバッガー利用または7日後)。APIアクセスをシステムに組み込みました。
私と同い年で身長も同じぐらいのWebプログラマのmotooさん、ありがとうございます!
いいね!が50を越えると、OGPのtitleは変更できなくなる
知っておくと便利な小ネタ。
いいね!が50を越えると、元ページのOGPを変えても、Facebookでシェアされるときのog:titleは変わらなくなります(正確にはog:titleとog:type)。
これは、すでにシェアしたりいいね!したりしているユーザーを驚かせないため、とのこと。
何か誤報を流してしまったことが判明して、それを訂正したとします。でもページへのいいね!が50を越えていたら、前述のオブジェクトデバッガーを通してキャッシュをクリアしても、og:descriptionとかog:imageへの変更は反映されますが、Facebookでシェアされるときのタイトルは変わらないということです。
名誉毀損とかの可能性がある致命的な場合とかには変えられるようにしてもらえるとありがたいですが、厳しいんでしょうね……。
これに関する公式な解説が昔はあったのですが、今はちょっと記載されているぐらいですね。
以上、Facebook関連の小ネタ2つでした。あまりすぐに役立つ内容とかじゃなくてすいません。
ソーシャルもやってます!