Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

はてなブログAPIを利用する前に知っておきたいポイント・注意点

ここ最近はてなブログAPIを利用していて学んだことを共有します。 はてなブログのAPIを使って何かを開発したいなと思っている方は、以下のポイントに注意が必要です。

  • OAuthはOAuth1
  • APIはAtomPubというXML形式
  • OAuthで認証した「ブログメンバー」は、API経由でアクセスできない
  • API経由で記事を下書き保存してもプレビューURLが取れない

この記事では、OAuth時のブログメンバーの挙動について詳しく説明し、他に細かなポイントについて触れていきます。

ともあれAPIがあるのはありがたいです! ありがとうございます。はてなさん、ぜひアップデートしてくれると嬉しいです。

この記事は2020年10月3日に執筆しておりますので以降のアップデートについてはご確認ください。 できるだけ追記、編集していきたいと思いますが、期待せずにご自身でご確認いただければと思います。 また記事の内容は、はてなさんに問い合わせ・フィードバック済みです。

はてなブログAPIをブログメンバーは使えない

はてな認証を利用してOAuthで認証したアカウントが「ブログメンバー」の場合、対象のブログへの操作が行えません。 はてなブログには「ブログメンバー」という仕組みがあり、ブログを作った人以外にも記事を投稿、編集できる仕組みがあります。

この機能はとても良いですし、実際にはてなブログの画面から利用する際には問題ありません。 ですが公開されている、 はてなブログAtomPub APIを経由するとブログのオーナーしか記事の投稿、編集はできません。 直感的にはAPI経由でもメンバーの権限が考慮されるかと思いますが、はてなブログAtom Pubからはブログメンバーは一切操作できません。

この情報は、はてなブログAtomPub APIのドキュメントには記載されていないので、APIを利用しようかなと思っている人は覚えておくと良いかもしれません。

2020年10月3日時点で、はてなに問い合わせして確認済みです。

エラーレスポンスの仕様

細かい話ですが、ブログメンバーがAtomPub経由で記事を投稿すると、以下の内容でエラーレスポンスが返ります。

はてなブログ法人プランでも同様にブログメンバーはAPIを使えない

はてなブログの法人プラン、 はてなブログBusinessでもこの仕様は同様です。 はてなブログAtomPub API経由では、ブログメンバーはブログに投稿、編集はできません。

2020年10月3日時点で動作確認済みです。

はてなブログAPIを複数人で利用する方法

方法としてはOAuthを使わないのが良いでしょう。 時代に逆行したようなアドバイスになり悲しいですが、現状はOAuthを使わずにAPIキーを使うのが良いです。

はてなブログAtomPub APIAPIキーというのを使った認証も可能です。 これはブログオーナーの名前とAPIキーを利用してBasic認証し、記事の投稿、編集をするものです。

その際はブログオーナーを個人のアカウントでなく、組織用アカウントとして別途用意すると良いでしょう。 APIキーを利用すると個人の他のブログにも投稿できたり、ブログメンバーのようなロール管理もできません。 個人のアカウントで複数ブログを用意し、特定のブログにのみブログメンバーを招待している場合はアカウントを整理したほうが良いでしょう。

実際に、はてなブログBusinessを契約する際は、個人に紐付かない共有できるアカウントをオーナーアカウントにすることが推奨されます。 はてなブログ的には、複数人で組織的に運用する場合はこの方法が良いということでしょうか。

はてなブログBusinessの契約画面

API経由で下書き記事を作成してもプレビューURLが取れない

はてなブログAtomPub APIは下書きも作成できて便利ですが、残念ながらプレビューURLは取得できません。

はてなブログAtomPub経由で記事を作成した場合も記事のURLは取得できるので、はてなの編集画面へのリンクは作成できます。

他の細かなポイント

はてなブログAPIがあることは非常に助かるのですが、今現在となると少し不便な点もあります

  • OAuthといってもOAuth1(OAuth2ではない)
  • APIがAtomPub形式なのでXML対応が必要(JSON APIではない)
  • OAuthではてなID認証したときのスコープが大きい

とくにスコープについては、はてな内のサービス単位でスコープができると嬉しいです。 公開・非公開情報を、読み・書きできるか、という4種類しかないので、はてなブログにのみ権限が必要でもはてなブックマークの権限も手に入れてしまいます。

あまり利用者もいないのかなぁと思いますが、少し昔の牧歌的なAPIという印象です。

まとめ

今回のポイントは以下でした。

  • はてなブログのAtomPub APIはブログメンバーがOAuthで認証しても使えない
  • ブログの下書きプレビューURLはAPI経由で取得できない
  • はてなブログAPIは全体的に少し昔っぽい

はてなブログに投稿できるのはとても助かりますので、はてなさん、ぜひアップデートしてくれると嬉しいです。 そもそもAPI自体がないサービスもありますので、あるだけで嬉しいのは間違いありません。

この記事はShodo (https://shodo.ink) で執筆されました。