LoginSignup
0
0

More than 3 years have passed since last update.

Google Cloud RunでRubyを使ってGoogleドライブにアクセスする(サンプル付き)

Last updated at Posted at 2020-03-01

背景

Google Cloud RunでRubyを使ってFirestoreにアクセスする(サンプル付き)の続きです。

元々解決したかったのは「Googleドライブのための認証を行う時にファイルへの書き込みを行っていた」のをどうやってCloud Runに持ってくるかという話でした。

認証情報の保存方法はファイルRedisの2通りがあります。

先述の通りCloud Runの仕様上ファイルへの書き込みは止める必要があり、Redisは

  • Memorystore for Redisには無料枠がないっぽい
  • GCEのVMインスタンスにRedisを立てても、Cloud Runから内部ネットワーク経由でアクセスする方法がないっぽい

ために諦め、TokenStoreの実装は難しくなかったので、Firestoreを使うTokenStoreをでっち上げて使う方法を試してみた所、うまく行きました。

サンプル

動かし方

前回の記事と異なる点のみ記載します。

Googleドライブとの連携の設定

Developer ConsoleからOAuth 2.0 クライアント IDを開きます(作ってないなら作る)。

クライアント ID

クライアント IDクライアント シークレットを確認します。

Cloud Runでのサービス起動時に

環境変数

環境変数にクライアント IDクライアント シークレットを設定します。

(無理やり)ブラウザから操作する

statelessg…iveaccess_–_サービスの詳細_–_Cloud_Run_–_kokkai-iinkai_–_Google_Cloud_Platform.png

OAuth2の認証を利用する都合、ブラウザから操作する必要があります。

ブラウザからのリクエストにヘッダ項目を追加できるプラグインを使います。私はModHeaderを使いました。

Cloud Shell上でgcloud auth print-identity-tokenコマンドを実行してトークンを取得したあと、追加のリクエストヘッダを設定して

リクエストヘッダ

サービスのURLを開きます。

リンク先で認証を行って、コードをコピーして、元のページのコード入力欄にペーストして、送信します。コピー元で改行になっていたところにスペースが入っているかもしれないので、そこは削除しましょう。

Hello_Google_Drive.png

Googleドライブのファイルの名前が一覧表示されます。

Firestoreに保存された認証情報

kokkai-iinkai_–_Firebase_console.png

このように、認証情報が保存されています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0