≪≪この記事をすべて読むには約 4 分かかります≫≫
Google Cloud APIのうち最近のバージョンのものを使おうとするとき、APIキー制ではなくなっているものがあります。
私が触ったものだと、Google翻訳のAPI、Google Cloud TranlationのAdvanced(v3)です。ライブラリが公開されているので使い方は簡単ですが、これまでのAPI呼び出しと大きく異なり、サーバーに認証ファイルを置いておく必要がありました。このIAMの認証ファイルって、パーミッションどうしたら良いのでしょうか。
はまったポイントをいくつか書き残しておきます。
IAM設定が必要
Google Cloud Translation APIを使用しますが、これまでのAPIキーのようなものとは違う認証方式です。具体的には、Google CloudのページでTranslation APIを使用するユーザー権限(IAM)を追加する必要があります。
Google Cloudのプロジェクトに紐づけた権限(IAM)を設定します。サービスアカウント(Cloud Translation APIユーザー)を作成し、「サービスアカウント」のメニューからそのサービスアカウントに関連付けた鍵を作成してダウンロードします。Googleのクラウドコンピューティングだと楽にセットできるようですが、通常のサーバーでは、JSON形式の鍵をダウンロードする必要があります。
このJSON形式の鍵をPHPから使用します。
PHP環境変数の設定
PHPの環境変数を設定して実行しないといけません。環境変数の中身は、
GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json
です。
一時使用ならシェルからexport
export $GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json

PHP内ならputenv();
putenv(‘GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json’);
で設定します。後半の変数部分に「””」を書いてしまってエラーになってしまっていました。気づくのに時間がかかりました。
一応ハードコードも可
jsonを読み込ませなくても、ハードコーディングするという方法もなくはないようですが、汎用性とセキュリティ面で危ないので避けるべきです。

sourceLanguageが設定できなかった
ドキュメントを探しても見つけられなくて、Bing AIに何度聞いても「I am sorry.」と言われるので、ソースランゲージを設定する方法が見当たりません。
composer google/cloud-translate
require ‘vendor/autoload.php’;
use Google\Cloud\Translate\V3\TranslationServiceClient;
でも、APIそのものでも、設定項目値に原理的には入るようですが、指定方法がわからず。残念。自動判定にお任せで大体問題はなさそうですが。
コメント