この記事は?
個人的なシステムでRealtime Databaseで扱っていたデータをCloud Firestoreに移管することにしたため、それに伴いC#で作成したバッチプログラムからCloud Firestoreにデータを書き込めるようにする必要が出てきた。その時の実装内容を備忘を兼ねて記事にした。
やりたい事
メディアファイルをFirebase Storageにアップロードして、それに関連するデータをCloud Firestoreに書き込む。
実装手順
サービスアカウントの作成
まずAPIを介してCloud Firestoreにアクセスするために認証を通す必要があるので、Firebaseの管理画面でサービスアカウントの作成を行いま
す。
Firebaseの管理画面でプロジェクトの設定 > サービスアカウントと進んで「新しい秘密鍵の生成」をクリックします。
秘密鍵のjsonファイルがダウンロードされるので、これを任意の場所に保存しておいてください。
Google.Cloud.Firestoreパッケージの取得
Cloud FirestoreをC#から使うためにはGoogle.Cloud.Firestoreパッケージが必要なのでNugetで取得してインストールしてください。
環境変数の設定
環境変数に秘密鍵の場所を設定します。任意の場所(今回はMain()の中で実装しました)に下記を記述してください。
string accessKeyPath = "秘密鍵のファイルパス";
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", accessKeyPath);
書き込みを行う部分を実装する
ここまでの手順で準備ができたので、実際に書き込みをするコードを実装します。
// インスタンス生成
var db = FirestoreDb.Create("プロジェクトID");
// キー指定してドキュメントを取得
var radioRef = db.Collection("コレクション名称").Document(id);
// 書き込むデータを準備
var user = new Dictionary<string, object>
{
{ "title", title },
};
// 書き込み(IDに該当するデータが無いときは追加、ある時は更新される)
await radioRef.SetAsync(user);
プロジェクトIDはFirebaseの管理画面でプロジェクトの設定を開くと表示されています。