0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Wordpress.comの「Application Manager」を使って認証処理を実装してみる

Last updated at Posted at 2024-07-17

Wordpress.comの認証

Wordpress.com 上のデータを外部から扱うには認証(OAuth2.0)が必要です
Wordpress.comから提供されている認証エンドポイントを利用して、外部からWordpress.comのデータを扱えるようにしましょう。

手順

  1. Application manager で認証アプリを作る
  2. アプリケーションパスワードを発行する
  3. 認証処理を実装する

Application manager で認証アプリを作る

Application Managerのリンクは以下。

このリンクの右上に「Create New Application」があるのでクリックすると、以下のようなアプリ作成が出ます。

スクリーンショット 2024-07-09 1.31.03.png

各項目の説明

  • Name
    • アプリケーションの名前
  • description
    • アプリケーションの概要
  • Website URL
    • この認証アプリを適応するブログURL
  • Redirect URLs
    • OAuth認証後にユーザーがリダイレクトされるURL
  • Javascript Origins
    • この認証アプリを適応するブログURLでいいと思います
  •  What is 7 + 5?
    •  なんか聞かれるのでちゃんと答えよう
  •  Type
    •  Webアプリで使うかネイティブアプリで使うかの選択
  •  Follow Developer blog
    •  Wordpress.comの Developer Blog の更新情報を自分のメールに配信するか

これらを入力して保存すると、以下の情報が表示されますが、赤で囲っている部分を後ほど使用します。

スクリーンショット 2024-07-09 1.53.23.png

アプリケーションパスワードを発行する

以下を参考にしてください。

認証処理を実装する

envはよしなに設定してください。

認証トークンの発行
// 1. で作成したアプリの Client ID と Client Secrets を使う。
public function getToken($user, $password): string
{
    $curl = curl_init( config('services.wordpress.endpoint'). "/oauth2/token" );
    curl_setopt( $curl, CURLOPT_POST, true );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, [
        'client_id' => config('services.wordpress.client_id'),
        'client_secret' => config('services.wordpress.client_secret'),
        'grant_type' => 'password',
        'username' => $user,
        'password' => $password,
    ] );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
    // Access-Control-Allow-OriginをCORSがおこならないように設定
    curl_setopt( $curl, CURLOPT_HTTPHEADER, [
        'Access-Control-Allow-Origin: *',
    ] );
    $auth = curl_exec( $curl );
    $auth = json_decode( $auth );
    $access_key = $auth->access_token;

    return $access_key;
}
Wordpress.comの記事投稿APIを使ってみる
public function post($baseUrl, $user, $password, $data): Response
{
    return
        Http::withHeaders([
                'Authorization' => 'Bearer '.$this->getToken($user, $password)
            ])
            ->post(config('services.wordpress.endpoint'). "/wp/v2/sites/". parse_url($baseUrl, PHP_URL_HOST). "/posts", $data);
}

これで Wordpress.comのREST APIが使用できます。

#追記
この手法は このアプリを作ったユーザのアイパス出ないと動きません。
改善手法はまた後日に紹介します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?