Base64認証って何?初心者がつまずくWordPress API連携をわかりやすく解説

「認証エラー」で心が折れかけた、あの夜の話

副業で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連携に挑戦してみてください!

コメント

タイトルとURLをコピーしました