はてなブックマークの件数取得APIをSSLページで取得する際、ドキュメント通りにやるとJavaScriptでは使えませんが、公式実装を真似してやればhttpsでも使えます。ところが公式実装の方法はドキュメントに反している、というお話です。

実装方法

エンドポイントには2種類あります。

  • `http://api.b.st-hatena.com/entry.count`
  • `http`または`https://b.hatena.ne.jp/entry.count`

前者はSSLページ非対応、後者は対応しています。具体的な実装はhinaloeさんのページに詳細があります。前者を使ったらだめだったので、公式実装を見て後者が使えることがわかったよ、という内容です。

はてなブックマークAPIをSSLなサイトに使う

問題はこのb.hatena.ne.jpがドキュメント上では廃止予定扱いという点です。

ドキュメントはどうなっているか

はてなブックマーク件数取得APIドキュメントは次のようになっています。

なお、API のエンドポイントのドメインは api.b.st-hatena.com となっていますが、現時点(2009年08月11日)では b.hatena.ne.jp ドメインでもアクセス可能ですが、将来的にはこの GET リクエストのAPIではb.hatena.ne.jp ドメインでは使えなくなる可能性がありますので、api.b.st-hatena.com をご利用ください。

はてなブックマーク件数取得API – Hatena Developer Center

「b.hatena.ne.jpは使うなよ、api.b.st-hatena.com使えよ」ということになっています。

公式実装はどうなっているか

ところで、はてなブックマークボタンは2013年6月に公式でSSLページに対応しています。

はてなブックマークボタンは、本日からSSL接続が有効なページ (URLが https:// から始まるページ) での設置に正式に対応しました。これにともない、これから新たにはてなブックマークボタンのガイドページのコードを利用して設置されるはてなブックマークボタンについては、SSL接続が有効なページであっても、ブラウザのセキュリティ警告メッセージが表示されなくなりました。

はてなブックマークボタンで日本語のラベルが選べるようになり、SSL接続のページにも対応しました – はてなブックマーク開発ブログ

はてなブックマークボタンの実装は「https://b.st-hatena.com/js/bookmark_button.js」を使うようになっています。

ドキュメント推奨の親ドメイン――と思いきや、https://b.st-hatena.com/js/bookmark_button.jsの中身では「api.b.st-hatena.com」はなく「b.hatena.ne.jp」が使われています。

if (location.protocol === 'https:') {
    B.apiOrigin = 'https://b.hatena.ne.jp';
} else {
    B.apiOrigin = 'http://cdn.api.b.hatena.ne.jp';
}

ファイル内に「api.b.st-hatena.com」は出てきません。
ドキュメント推奨は使われず、逆に廃止予定のほうがSSL対応されて、逆さまになっているという状態です。

サポートには連絡済み

この件は9月から3往復ぐらいサポートとやり取りしたのですが、「時間がかかるよ」ということで芳しい答えは得られませんでした。無料で使わせていただいているものなので無理は言えませんが、googleがhttps優遇をしている中で正式な答えが得られないのはちょっとあいたたたな感じです。