FirebaseのEmulatorをJavaScriptのSDKを使って利用する方法はネット上に豊富にあるのですが、
.NETのSDKを使ったやり方はあまり情報が無かったので記事にしました。
Emulatorの構築方法についてはこの記事では割愛させていただきます。
基本的には環境変数を設定してから呼び出す流れでいけるはずです。
実際にやってみたのは以下2つ。
- Cloud Firestore
- FirebaseAdmin Auth
cloud Firestore
// 環境変数にemulatorへの向き先を設定
Environment.SetEnvironmentVariable("FIRESTORE_EMULATOR_HOST", "localhost:8080");
var firestoreDb = new FirestoreDbBuilder()
{
// 何でも良さそう? エミュレータ起動時に指定したproject名にしておけば安心
ProjectId = "testproj",
// エミュレータへの接続を強制しておけば安心
EmulatorDetection = Google.Api.Gax.EmulatorDetection.EmulatorOnly,
}.Build();
FirebaseAdmin Auth
// 環境変数にemulatorへの向き先を設定(ローカルでデフォルト設定ならlocalhost:9099)
Environment.SetEnvironmentVariable("FIREBASE_AUTH_EMULATOR_HOST", "localhost:9099");
FirebaseAdmin.FirebaseApp.Create(new FirebaseAdmin.AppOptions()
{
// でたらめで良いので何らかのCredentialを指定する
Credential = Google.Apis.Auth.OAuth2.GoogleCredential.FromAccessToken("mocktoken"),
// エミュレータ起動時に指定したproject名
ProjectId = "testproj",
});
番外編
非公式のGoogleCloudStorageエミュレータ、fake-gcs-serverへの接続はこんな感じ。
.NETから使う際は起動時に-external-url
で自身のURLを引数指定してやる必要がある模様。
gitのexsamplesに.NETから呼び出す用のDockerファイルが用意されているので、それを使えば手っ取り早い。
var client = new StorageClientBuilder()
{
// URLはフルで指定
BaseUri = "http://localhost:5678/storage/v1/",
// 認証無しで接続
UnauthenticatedAccess = true,
}.Build();