「認証エラー」で心が折れかけた、あの夜の話
副業でWordPressのブログ自動化に挑戦し始めたころ、私は何度も同じエラーメッセージに悩まされました。
「401 Unauthorized」
このエラーを見るたびに「なんで?ちゃんとパスワード入れてるのに!」と頭を抱えていました。原因はずっとわからなかったのですが、ある日ようやく気づいたんです。「あ、Base64エンコードしてなかったんだ」って。
この記事では、WordPress API連携で初心者がよくつまずく「Base64認証」について、できるだけわかりやすく解説します。副業でAPI自動化に挑戦したい会社員の方に、ぜひ読んでほしい内容です。
そもそもWordPress REST APIって何?
まず前提として、WordPress REST APIについて簡単に説明します。
WordPress REST APIとは、外部のプログラムやツールからWordPressを操作できる仕組みのことです。たとえば、PythonスクリプトやGAS(Google Apps Script)を使って、自動で記事を投稿したり、既存の記事を編集したりすることができます。
副業ブロガーとしては、これを使うとAIで生成した記事を自動投稿するといった仕組みが作れるので、作業効率が劇的に上がります。私もこの自動化のおかげで、平日の隙間時間だけでブログ運営ができるようになりました。
APIを使うには「認証」が必要
ただし、誰でも自由にWordPressを操作できてしまうと危険ですよね。だから、APIを使う際には「あなたは正規のユーザーですよ」と証明する認証作業が必要です。
WordPressのREST APIで使われる認証方法にはいくつかありますが、初心者に最もとっつきやすいのがBasic認証(ベーシック認証)です。そして、このBasic認証の中に「Base64エンコード」という処理が含まれているのです。
Base64認証とは何か?小学生でもわかる説明
Base64(ベース64)とは、一言でいうと「データを特定のルールで別の文字列に変換する方法」です。
たとえば、あなたのWordPressのユーザー名が「admin」、パスワードが「mypassword」だとします。これをそのままAPIに送るのではなく、「admin:mypassword」という文字列をBase64でエンコード(変換)してから送るのがBasic認証のルールです。
変換後の文字列はこんな感じになります:
YWRtaW46bXlwYXNzd29yZA==
「なんだこの呪文は!」と思いますよね。でも安心してください。これは暗号化ではなく、単なる文字列の変換です。元に戻すことも簡単にできます。なのでセキュリティ的には完全ではありませんが、APIの世界では広く使われているフォーマットです。
実際にBase64エンコードしてみよう
では実際にPythonを使ったコード例を見てみましょう。副業でよく使われる自動投稿スクリプトの基本形です。
Pythonでの基本的な書き方
import requests
import base64
# WordPressのURL、ユーザー名、パスワード
url = "https://あなたのサイト.com/wp-json/wp/v2/posts"
username = "admin"
password = "your_application_password"
# Base64エンコード
credentials = f"{username}:{password}"
token = base64.b64encode(credentials.encode()).decode("utf-8")
# ヘッダーに認証情報をセット
headers = {
"Authorization": f"Basic {token}",
"Content-Type": "application/json"
}
# 投稿データ
data = {
"title": "テスト投稿",
"content": "これはAPIからの自動投稿です。",
"status": "draft"
}
# APIリクエスト送信
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
このコードの肝はbase64.b64encode()の部分です。ここでユーザー名とパスワードを結合した文字列をBase64に変換しています。私が最初につまずいたのは、まさにこの処理を飛ばして直接ユーザー名とパスワードを送っていたからでした。
初心者がよくやる3つのミス
私自身の経験と、副業仲間から聞いた話をもとに、よくあるミスをまとめました。
ミス①:通常のログインパスワードをそのまま使う
WordPressのREST APIには、通常のログインパスワードではなく「アプリケーションパスワード」を使うことが推奨されています。WordPress 5.6以降はダッシュボードの「ユーザー」→「プロフィール」から発行できます。このパスワードを使わないと認証が通らないケースがあります。
ミス②:Base64エンコードを忘れる(私がやったやつ)
前述の通り、ユーザー名とパスワードをそのまま送っても認証されません。必ず「ユーザー名:パスワード」の形式でBase64エンコードしてからAuthorizationヘッダーにセットしましょう。
ミス③:HTTPとHTTPSを間違える
WordPressのAPIはHTTPS(SSL)でないと正常に動作しないことがほとんどです。URLが「http://」になっていないか確認しましょう。副業で使う格安レンタルサーバーでも、今は無料でSSL設定できるところが多いので必ず設定してください。
セキュリティ面で気をつけること
Base64は簡単にデコード(元に戻す)できるため、コードの中にユーザー名やパスワードをそのまま書かないことが大切です。
おすすめの対策は以下の2つです:
- 環境変数を使う:パスワードをコードに直書きせず、.envファイルや環境変数として管理する
- アプリケーションパスワードは用途ごとに発行する:万が一漏れた場合でも、該当のパスワードだけ削除すればOK
副業とはいえ、自分のWordPressサイトは大切な資産です。セキュリティは最低限押さえておきましょう。
まとめ:Base64を理解すればAPI連携は怖くない
今回のポイントを整理します。
- WordPress REST APIを使うには認証が必要
- Basic認証では「ユーザー名:パスワード」をBase64でエンコードしてヘッダーに付ける
- 通常のパスワードではなくアプリケーションパスワードを使う
- パスワードはコードに直書きせず環境変数で管理する
最初は「Base64って何?」と戸惑うかもしれませんが、一度理解してしまえば怖くありません。私も最初のエラーから数時間後には無事に自動投稿が動いた瞬間、本当に感動しました。
副業でのブログ自動化は、最初の壁さえ乗り越えれば一気に作業効率が上がります。ぜひこの記事を参考に、WordPressのAPI連携に挑戦してみてください!

コメント