LoginSignup
12
11

More than 5 years have passed since last update.

Google Apps ScriptからFirebase Realtime Databaseにアクセス (Secret key不要)

Last updated at Posted at 2018-10-17

Authenticate via OAuth 2 access tokenという公式チュートリアルを参考に、導入からデータベース書き込みまでを行います。

Google Apps ScriptにFirebaseのライブラリを追加する

FirebaseにアクセスしたいGoogle Apps Scriptを開きます。
「リソース」->「ライブラリ...」といきます。

スクリーンショット 2018-10-17 23.45.41.png

図書館(?)というウィンドウが出てくるので、

MYeP8ZEEt1ylVDxS7uyg9plDOcoke7-2l

というキーを入れてあげて、ライブラリ追加します。バージョンの選択は最新のものにしてください(2018年10月現在、バージョン29)。

スクリーンショット 2018-10-17 23.46.59.png

最後に保存を押して確定させます。

マニフェストファイルにスコープを追加する

「表示」->「マニフェストファイルを表示」といきます。
横のタブにappscript.jsonが出てくるので、このファイルの最後に

"oauthScopes":["https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/firebase.database","https://www.googleapis.com/auth/script.external_request"]

を追加します。これでFirebaseの認証や書き込みが可能な状態となります。

スクリーンショット 2018-10-17 17.55.21.png

コードの認証&実行

メインのコードに戻って、

function updateData() {
  var token = ScriptApp.getOAuthToken();
  var fb = FirebaseApp.getDatabaseByUrl("https://my_db.firebaseio.com/", token);
  fb.setData("testPath/hoge", "huga");
}

のような関数を用意します。
my_db....の部分は、アクセスしたいデータベースのものに置き換えてください。基本的に以下のようなURLになると思います

https://プロジェクトID.firebadeio.com/

(テスト用のデータベースで試してください。大事なデータに上書きしないようにご注意!!)

上で用意した関数を実行すると、以下のようなウィンドウがでます。

スクリーンショット 2018-10-18 0.09.23.png

ここはパーミッションが要求されてるので、データベースの書き込み権限があるアカウントで認証してあげてください。(書き込み権限については次節)

認証ができると、コードが実行できるようになります。
コードの実行後にFirebaseのRealtime Databに書き込みができていれば成功です!

スクリーンショット 2018-10-18 0.13.04.png

以上で、Google Apps ScriptからFirebase Databaseにアクセスできるようになりました。

参考:データベースの権限を確認する

スクリーンショット 2018-10-17 21.49.38.png

プロジェクトの横の歯車から「ユーザーと権限」に飛びます。
「編集者」あるいは「オーナー」の権限がついているアカウントで前節のGoogle Apps Acount実行の認証を行います。

編集権限がないアカウントで実行しても書き込みできません。その場合は別の方法ならできるらしいのですが、割愛。

参考: Secret keyを用いた方法

Google Apps ScriptからFirebaseに書き込むためには、Secret Keyを用いて認証する方法もあります。
ただこの方法はSecret Keyをコードに直書きする必要があり、deprecatedのようです。

[参考]
https://qiita.com/BearsSoft/items/728da4636203421292ee
https://qiita.com/maeda_88/items/9ff25772f1c910df6c06

公式リファレンス

ライブラリの追加について
https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase

メソッド等のリファレンス
https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase/reference

さいごに

シークレットキーを直書きすることなくFirebaseへのアクセスができるようになりました。

別にCloud Functions使えばいいじゃんという意見が聞こえてきそうですが、index.jsが肥大化しそうなので今回はあえてGoogle Apps ScriptにてDatabaseへの書き込みというのをやってみました。
Google Apps Scriptは実行時刻の設定も楽ですし。

一方で、Cloud Firestoreへの書き込み方法はまだ不明です。誰か教えてくり〜

12
11
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
12
11