LoginSignup
0
0

More than 1 year has passed since last update.

C#でFirebaseのStorageとRealtime Databaseを操作する

Posted at

この記事は?

EC2+Firebaseで作ったWebサイトで使用するメディアファイルをFirebaseにアップロードする機能が必要になったのでC#で作ることにした。
その中で使用したFirebase関連の処理を備忘を兼ねて記事にした。

使用するパッケージ

Firebaseを使用するためのパッケージはいくつかあるようだが、今回はFirebaseXXX.netを使う事にした。

使用例

メディアファイルをStorageにアップロードして、そのファイルに関する情報をReal Time Databaseに登録する処理を例にする。

認証用のトークンを取得する

StorageとReal Time Databaseを使うにあたってFirebaseの認証を通してトークンを発行する必要がある。

using Firebase.Auth;

// 途中省略

var auth = new FirebaseAuthProvider(new FirebaseConfig("APIキー"));
var token = await auth.SignInWithEmailAndPasswordAsync("メールアドレス", "パスワード");

APIキーはFirebaseのプロジェクトの設定ページに表示されている「ウェブ API キー」を指定します。
トークンの発行方法はいくつか種類があるようですが、ここではメールアドレスとパスワードを使った一番単純なものを使いました。

Storageにメディアファイルを登録する

取得したトークンで認証を通してStorageにファイルをアップロードする。

using Firebase.Storage;

// 途中省略

using (var fp = File.Open("ファイルのパス", FileMode.Open)){
    // ファイル登録
    var task = new FirebaseStorage("Storageのフォルダパス", new FirebaseStorageOptions
    {
        AuthTokenAsyncFactory = () => Task.FromResult(token.FirebaseToken)
    }).Child("ファイル名").PutAsync(fp);

    // アップロードの進捗が変わった時のイベント
    task.Progress.ProgressChanged += (s, e) =>
    {
        Console.WriteLine($"{e.Percentage}%");
    };

    // アップロードが終わるとダウンロードURLが発行される
    var downloadUrl = await task;
}

StorageのフォルダパスはStorageの管理画面に表示されている「gs://」で始まる部分から「gs://」を除いた部分。

Realtime Databaseにファイル情報を登録する

取得したトークンで認証を通してRealtime Databaseにファイルの情報を登録します。

using Firebase.Database;

// 途中省略

var firebaseDB = new FirebaseClient(
    "Realtime DatabaseのURL",
    new FirebaseOptions
    {
        AuthTokenAsyncFactory = () => Task.FromResult(token.FirebaseToken)
    }
);

await firebaseDB.Child("データ名" + "/" + "キー").PutAsync(
    "{\"datetime\":\"" + time.ToString("yyyy/MM/dd HH:mm") + "\",\"title\":\"" + title + "\"}"
);

Realtime DatabaseのURLはRealtime Databaseの管理画面に表示されているURLです。

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