既存ユーザーにAPIキーを発行する方法

WordPress

WordPressでは、ユーザーごとにAPIキーを発行することで、特定のAPIへのアクセスを制限できます。この記事では、既存のすべてのユーザーにAPIキーを一括で発行する方法を解説します。この方法を使うことで、手動で個別のユーザーにAPIキーを発行する手間を省けます。

必要なコードを追加

まず、APIキーを既存のすべてのユーザーに発行するためのコードを追加します。このコードは、管理者ユーザーが実行することで、サイト内のすべてのユーザーにAPIキーを生成し、保存します。

/**
 * すべての既存ユーザーにAPIキーを発行する
 */
function generate_api_keys_for_existing_users() {
    // 管理者以外がアクセスした場合は処理しない
    if (!current_user_can('manage_options')) {
        return;
    }

    // すべてのユーザーを取得
    $users = get_users(array('fields' => array('ID')));

    foreach ($users as $user) {
        $user_id = $user->ID;

        // すでにAPIキーがあるか確認
        $api_key = get_user_meta($user_id, 'api_key', true);
        if (empty($api_key)) {
            // APIキーを発行
            $new_api_key = bin2hex(random_bytes(16)); // 32文字のAPIキー
            update_user_meta($user_id, 'api_key', $new_api_key);
        }
    }

    echo "すべてのユーザーにAPIキーを発行しました。";
    exit;
}

APIキー発行処理の実行方法

上記のコードは、管理者がWordPressサイトのURLに特定のクエリパラメータ(generate_api_keys=1)を追加することで実行できます。この処理は、一度だけ実行することで、すべてのユーザーにAPIキーが発行されます。

以下のコードをfunctions.phpに追加し、WordPressサイトのURLにアクセスすることで実行します。

// URLに `?generate_api_keys=1` を追加すると実行
if (isset($_GET['generate_api_keys']) && $_GET['generate_api_keys'] == '1') {
    generate_api_keys_for_existing_users();
}

実行方法

次に、WordPressの管理者としてログインし、ブラウザのURLバーに次のように入力します。

https://example.com/?generate_api_keys=1

このURLを入力すると、すべてのユーザーにAPIキーが発行されます。発行が完了すると、「すべてのユーザーにAPIキーを発行しました。」というメッセージが表示されます。

重要な注意点

  • 管理者専用: この処理は管理者ユーザー専用です。通常のユーザーがアクセスしても動作しないように、current_user_can('manage_options') で管理者のみが実行できるようにしています。
  • APIキーの重複確認: すでにAPIキーが発行されているユーザーには、新たにAPIキーが発行されないようにしています。
  • 一度だけ実行: このコードは一度だけ実行すれば十分です。すべてのユーザーにAPIキーを一度で発行できます。

APIキーの利用方法

一度APIキーを発行した後、ユーザーはそれを用いて、APIリクエストを認証することができます。リクエスト時には、以下のようにX-API-KeyヘッダーにAPIキーを付加して送信します。

curl -H "X-API-Key: YOUR_API_KEY" "https://example.com/wp-json/reviews/v1/list/"

まとめ

この方法を使うことで、すべての既存ユーザーにAPIキーを発行し、APIへのアクセスを安全に管理することができます。管理者のみが実行できるように制限をかけ、ユーザーごとのAPIキーを一括で発行する手軽な方法を提供します。

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