はじめに
Google Cloud 環境の Data Pipeline ツールで Google Driveにアクセスする方法を調べる機会がありました。
Google Drive の認証周りの手順が煩雑でしたので備忘録になります。
OAuth認証
公式ドキュメントの通りでは足りなかったので補足します。
-
-
- Google Cloud の [API とサービス] > [OAuth 同意画面] からアプリ情報を登録します。
その時の注意事項として、スコープに「drive.readonly」を追加します。
- Google Cloud の [API とサービス] > [認証情報] から「OAuthクライアントID」を作成し、結果出力される「クライアントID」「クライアント シークレット」を保持します。
- 公式ドキュメントの5にある下記のURLをコピーし、「client_id」を編集します。
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A//www.googleapis.com/auth/drive.readonly& access_type=offline& include_granted_scopes=true& response_type=code& state=state_parameter_passthrough_value& redirect_uri=http%3A//localhost:8080& client_id=199375159079-st8toco9pfu1qi5b45fkj59unc5th2v1.apps.googleusercontent.com
- 上で作成したURLをブラウザで開きます。画面上で Google ドライブへのアクセス権を求められるので付与します。
付与を完了すると、[認証情報]で登録したURLへリダイレクトします。
このURLから「code=xxxxxxx」の値を取得します。http://localhost:8080/? state=state_parameter_passthrough_value& code=4/0AX4XfWi6PsiJiPO4MjltrcD6uoRgwci-HX16aL1-Ax-tgqYgC47NnjtCCKRoVzv46m8aJw& scope=https://www.googleapis.com/auth/drive
- 公式ドキュメントの5にある下記のURLをコピーし、「code」「client_id」「client_secret」を編集します。
curl -X POST -d "code=4/0AX4XfWjgRdrWXuNxqXOOtw_9THZlwomweFrzcoHMBbTFkrKLMvo8twSXdGT9JramIYq86w&client_id=199375159079-st8toco9pfu1qi5b45fkj59unc5th2v1.apps.googleusercontent.com&client_secret=q2zQ-vc3wG5iF5twSwBQkn68&redirect_uri=http%3A//localhost:8080&grant_type=authorization_code&access_type=offline" \ https://oauth2.googleapis.com/token
編集したURLをGoogle Cloud Platformの[Cloud Shell]で実行し、結果から「refresh_token」をコピーします。
- これまで取得した以下の3つの値をこの後使用します。
- クライアントID
- クライアント シークレット
- refresh_token
- Google Cloud の [API とサービス] > [OAuth 同意画面] からアプリ情報を登録します。
-
Data Pipeline ツール
Data Pipeline ツールとして、Data Fusion を利用してGドライブにアクセスしてみます。
- Google Cloud の [Data Fusion] からインスタンスを開始します。
- [HUB] から Google Drive Plugins を Deploy します。
- Data Pipeline Studioを開始します。
- 「Google Drive Source」の [Authentication] に先で取得した「クライアントID」「クライアントシークレット」「refresh_token」を設定します。
- 他の必要な設定を行い、実行します。
おわりに
以上が Google Drive の認証関連のポイントになります。
Data Fusion の記事は少なく英語の公式から解析しなければならなかったので、思ったよりも手間がかかりました。
本記事が誰かの助けになれば幸いです。