【備忘録】Google Translation APIをリフレッシュトークンを使ってアプリケーションから利用するまでの手順
はじめに
たまにOAuth2を使ってGCPのAPIを呼び出すことがあるのですが、手順をすぐ忘れる上に、新たに調べると毎回とても苦労します。
そこで未来の自分のために手順書を書くことにしました。
今回はGoogle Translation APIを呼び出しましたが、ほかのAPIでも応用できます。
実行環境はMacです。
今回やりたいこと
アプリケーションからGoogle Translation APIを呼び出して、日本語の商品名を英語に翻訳して表示します。
APIを呼び出す際に使うアクセストークンは時間が経つと失効してしまうので、リフレッシュトークンを使って毎回アクセストークンを新たに取得します。
手順
基本的にはこちらの記事を参考にしています。
Google APIのAccess Tokenをお手軽に取得する
https://qiita.com/shin1ogawa/items/49a076f62e5f17f18fe5
APIを有効にする
GCPのコンソールにアクセスし、APIとサービス→ライブラリを開きます。
使用したいAPIを検索し、APIを有効にします。
OAuth2.0 クライアントIDを作成する
GCPのコンソールでAPIとサービス→認証情報を開きます。
初めてクライアントIDを作成する場合はOAuth同意画面の入力が必要になるので、事前にアプリケーション名を入力して保存しておきます。
アプリケーションの種類を選択し(今回は「その他」)、名前を入力して作成します。
表示されたクライアントIDとクライアントシークレットを環境変数に設定します。
export CLIENT_ID=...
export CLIENT_SECRET=...
環境変数に設定する理由:この後、何度もcurlコマンドを実行しますが、これらの値を環境変数に設定しておくことで、この記事に記載されたコマンドをそのままコピペして実行することができます。
リダイレクトURIの設定
今回はデスクトップアプリケーションから呼び出すのでリダイレクトURIは固定値 urn:ietf:wg:oauth:2.0:oob
となります。
WEBアプリの場合は認証結果がリダイレクトされるURIを設定します。
export REDIRECT_URI=urn:ietf:wg:oauth:2.0:oob
スコープの設定
スコープに設定する値は以下のURLから調べることができます。
今回はhttps://www.googleapis.com/auth/cloud-translation
を設定します。
設定すべきスコープが複数ある場合は%20
(空白をWEBエンコードしたもの)でつないで記述します。
export SCOPE=https://www.googleapis.com/auth/cloud-translation
認可画面のURLを生成し、Authorization Codeを取得する
以下のコマンドを実行し、表示されたURLをブラウザに貼り付けて表示します。
echo "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline"
ログインして許可をクリックするとAuthorization Codeが表示されるので環境変数に設定します。
export AUTHORIZATION_CODE=...
Authorization Codeを利用してリフレッシュトークンを取得
以下のcurlコマンドを実行します。
curl -X POST --data "code=$AUTHORIZATION_CODE" \
--data "client_id=$CLIENT_ID" \
--data "client_secret=$CLIENT_SECRET" \
--data "redirect_uri=$REDIRECT_URI" \
--data "grant_type=authorization_code" \
--data "access_type=offline" \
https://www.googleapis.com/oauth2/v4/token
実行結果からリフレッシュトークンを環境変数に設定します。
export REFRESH_TOKEN=...
リフレッシュトークンを利用してアクセストークンを取得
以下のcurlコマンドを実行します。
curl -X POST --data "refresh_token=$REFRESH_TOKEN" \
--data "client_id=$CLIENT_ID" \
--data "client_secret=$CLIENT_SECRET" \
--data "grant_type=refresh_token" \
https://www.googleapis.com/oauth2/v4/token
取得したアクセストークンを環境変数に設定します。
export ACCESS_TOKEN=...
動作確認
以下のcurlコマンドを実行します。
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
--data "{ \
'q': '翻訳したい商品名', \
'source': 'ja', \
'target': 'en', \
'format': 'text' \
}" \
https://translation.googleapis.com/language/translate/v2
以下のような結果が返ってきたら成功です。
{
"data": {
"translations": [
{
"translatedText": "Product name you want to translate"
}
]
}
}
あとはアプリケーション側にリフレッシュトークンからアクセストークンを取得する処理と、アクセストークンを使って翻訳を実行する処理を組み込むだけです。
Author And Source
この問題について(【備忘録】Google Translation APIをリフレッシュトークンを使ってアプリケーションから利用するまでの手順), 我々は、より多くの情報をここで見つけました https://qiita.com/sikkim/items/f39ba5c8b800e7548cb6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .