Wordpress.comの認証
Wordpress.com 上のデータを外部から扱うには認証(OAuth2.0)が必要です
Wordpress.comから提供されている認証エンドポイントを利用して、外部からWordpress.comのデータを扱えるようにしましょう。
手順
- Application manager で認証アプリを作る
- アプリケーションパスワードを発行する
- 認証処理を実装する
Application manager で認証アプリを作る
Application Managerのリンクは以下。
このリンクの右上に「Create New Application」があるのでクリックすると、以下のようなアプリ作成が出ます。
各項目の説明
- 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 の更新情報を自分のメールに配信するか
これらを入力して保存すると、以下の情報が表示されますが、赤で囲っている部分を後ほど使用します。
アプリケーションパスワードを発行する
以下を参考にしてください。
認証処理を実装する
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が使用できます。
#追記
この手法は このアプリを作ったユーザのアイパス出ないと動きません。
改善手法はまた後日に紹介します。