1年ほど前から本サイトではログイン時にGoogle OAuthを利用しています。そのプラグインの開発ではPHPクライアントライブラリを使用していたのですが、このライブラリは汎用性が高い多機能なこともあり、ファイルサイズが大きいことが気になっていました。この週末にもう少しコンパクトにできないかと思い、ちょっと調べてみました(ありがとう、ChatGPT先生)。
先生曰く、Google OAuthの利用だけれあればgoogle/auth パッケージのみで対応できるとのこと。google/auth パッケージはPHPクライアントライブラリにも含まれているので、さっそく試してみた。
変更したアクセストークンの検証部分は次のような感じ。
$client = new \Google_Client(
[ 'client_id' => $this->google_oauth_client_id ]
);
return $client->verifyIdToken( $token );
上記を次のように変更してみた。
$accessToken = new \Google\Auth\AccessToken();
return $accessToken->verify(
$token, [ 'audience' => $this->google_oauth_client_id ]
);
本番サイトのプラグインを更新して試したところ、何の問題もなくログインできた。
Composerでgoogle/auth パッケージを取得し、プラグイン内のvenderディレクトリを差し替えてます。
$ composer require google/auth
本番サイトのプラグインを再度更新してログインしようとしたところ、アクセストークンを検証するAJAXリクエストが404エラーになっていました。リロードするなどして数回試しても変化がなかったため、エラーログを確認してみると、次のような内容が書き出されていました。
PHP Fatal error: Uncaught RuntimeException: Please require phpseclib/phpseclib v3 to use this utility.
というわけで、Composerでphpseclib/phpseclib
v3を追加。
$ composer require phpseclib/phpseclib:^3.0
無事、本番サイトでログインできるようになりました。今回のケースでは、google/auth パッケージにphpseclib/phpseclib
v3が必須ということですね。
さて、今回の目的はPHPクライアントライブラリ部分の軽量化なので、実際にvenderディレクトリの容量を確認してみます。
$ du -s ./vendor
270176 ./vendor
↓
9920 ./vendor
容量は約10MB、変更前の1/27とかなりコンパクトになったようです。