Oracle® Backend for Firebase (Fusabase) CLI
Documents % cd fusabase-livelabs
fusabase-livelabs %
fusabase-livelabs % npm install fusabase-cli
up to date, audited 116 packages in 954ms
15 packages are looking for funding
run `npm fund` for details
10 high severity vulnerabilities
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
fusabase-livelabs %
alias fusabase="npx fusabase"
fusabase-livelabs % alias fusabase="npx fusabase"
fusabase-livelabs %
npm config set loglevel warn
fusabase-livelabs % npm config set loglevel warn
fusabase-livelabs % fusabase --version
26.1.1
fusabase-livelabs %
OAuthクライアントを作成する
fusabase-cliは認証のために、OBAAS_ADMIN.ENABLE_SCHEMAを実行してOracle Backend for Firebaseを有効にしたスキーマに作成した、OAuthクライアントのクライアントIDとクライアント・シークレットを使用します。
Oracle Backend for Firebaseが有効化されたスキーマに接続し、上記のスクリプトを実行してOAuthクライアントを作成します。クライアントIDとクライアント・シークレットが印刷されるので、それを取得します。
fusabase-livelabs % sql testuser@localhost/freepdb1
SQLcl: 火 7月 28 13:40:57 2026のリリース26.1 Production
Copyright (c) 1982, 2026, Oracle. All rights reserved.
パスワード (**********?) *******
接続先:
Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free
Version 23.26.2.0.0
SQL> @create_oauth_client
OAuth client fusabase-cli is deleted.
OAuth client fusabase-cli is created.
client_id: 8gqfzPOwliW5LCyqGk8ofA..
client_secret: 7fijW5RzBki7jlW66CmLNQ..
Role SQL Developer has granted to OAuth user fusabase-cli.
PL/SQLプロシージャが正常に完了しました。
Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free
Version 23.26.2.0.0から切断されました
fusabase-livelabs %
印刷されたclient_idとclient_secretの値は、fusabase-cliの初期化時に使用します。
CLIよりサインインする
module.exports = {
host: 'http://localhost:8181/ords/testuser/'
}
fusabase-livelabs % fusabase init
✔ Type ORDS clientId (with SQL Developer Role) · 8gqfzPOwliW5LCyqGk8ofA..
✔ Type ORDS clientSecret · 7fijW5RzBki7jlW66CmLNQ..
http://localhost:8181/ords/testuser/
✔ Logged In successfully!
✔ Here are the projects accessible:
✔ Type (or choose) ProjectId to work on: · 573E3A97FC7320ADE063020012AC296D => recipe-workshop
Using project: 573E3A97FC7320ADE063020012AC296D
fusabase-livelabs %
セキュリティ・ルールを設定する
fusabase-livelabs % fusabase cel add --path=allow-all.txt
match /{document=**} { allow read, write: if true;}
✔ Rule Added Successfully!!
fusabase-livelabs %
セキュリティ・リストの確認にはlistコマンドを使用します。
fusabase-livelabs % fusabase cel list
✔ Fetched Successfully:
RULE PUBLISH
match /{document=**} { allow read, write: if true;} 0
match /recipes/{recipeId} { 0
allow read: if true;
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow update: if request.auth != null && request.auth.uid == resource.data.ownerId;
}
match /recipes/{recipeId}/ratings/{ratingId} {
allow read: if true;
allow create: if request.auth != null;
}
match /{document=**} { allow read, write: if true;} 0
match /{document=**} { allow read, write, create: if true;} 0
match /{document=**} { allow read, write: if true;} 0
match /recipes/{recipeId} { 0
allow read: if request.auth != null;
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow update: if request.auth != null && request.auth.uid == resource.data.ownerId;
}
match /recipes/{recipeId}/ratings/{ratingId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
}
match /{document=**} { allow read, write: if true;} 0
[中略]
match /recipes/{recipeId} { 0
allow read: if request.auth != null;
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow update: if request.auth != null && request.auth.uid == resource.data.ownerId;
}
match /recipes/{recipeId}/ratings/{ratingId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
}
match /{document=**} { allow read, write: if true;} 0
match /{document=**} { allow read, write: if true;} 1
fusabase-livelabs %
listコマンドでは、すべての変更履歴が一覧されます。現行のfusabase-cliでは、表示する行数を制限したりPUBLISHEDの行だけを表示するといったオプションを見つけることはできませんでした。
fusabase-livelabs % fusabase cel add --path=database-rules.txt
match /recipes/{recipeId} {
allow read: if request.auth != null;
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow update: if request.auth != null && request.auth.uid == resource.data.ownerId;
}
match /recipes/{recipeId}/ratings/{ratingId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
}
✔ Rule Added Successfully!!
fusabase-livelabs %
Databaseのセキュリティ・ルールはfusabase-cliで設定できますが、現行のfusabase-cliでは、Storageのセキュリティ・ルールは操作できません。
ワークアラウンドとして、Storageのセキュリティ・ルールを設定するスクリプトを書きました。
(注:現行のfusabase-cliはスクリプト内のstorage=2の部分が1としてハード・コードされているため、Databaseのセキュリティ・ルールの操作に固定されています。)
sh update-security-rules.sh allow-all.txt
fusabase-livelabs % sh update-security-rules.sh allow-all.txt
fusabase-livelabs %
fusabase-livelabs % sh list-security-rules.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4490 0 4490 0 0 140k 0 --:--:-- --:--:-- --:--:-- 141k
"rule","created_at","publish"
"match /{document=**} { allow read, write: if true;}","2026-07-23 02:04:15.541576",0
"match /recipes/{recipeId}/{fileName} {
allow read: if true;
allow create: if request.auth != null;
}","2026-07-23 03:22:07.450843",0
"match /{document=**} { allow read, write: if true;}","2026-07-23 04:03:41.637378",0
"match /recipes/{recipeId}/{fileName} {
allow read: if true;
allow create: if request.auth != null;
}","2026-07-23 07:44:59.371574",0
"match /{document=**} { allow read, write: if true;}","2026-07-23 08:01:50.348963",0
"match /recipes/{recipeId}/{fileName} {
allow read: if true;
allow create: if request.auth != null;
}","2026-07-23 19:54:31.101444",0
[中略]
"match /{document=**} { allow read, write: if true;}
","2026-07-28 02:18:58.799914",0
"match /recipes/{recipeId}/{fileName} {
allow read: if true;
allow create: if request.auth != null;
}
","2026-07-28 02:19:58.819528",0
"match /{document=**} { allow read, write: if true;}
","2026-07-28 05:20:25.188484",1
fusabase-livelabs %
認証済みのユーザーのみ、写真をアップロードできるようにするStorageのセキュリティ・ルールは以下です。
このセキュリティ・ルールは、以下のコマンドで設定します。
sh update-security-rules.sh storage-rules.txt
fusabase-livelabs % sh update-security-rules.sh storage-rules.txt
fusabase-livelabs %
Webアプリを実装する
fusabase-livelabs % fusabase application create
✔ Provide Application Name: · RecipeShareWeb
✔ Select Application Type: · web
✔ Application Created Successfully!!
{"APP_ID":"57A620B87BE604F8E063020012AC8D05"}
fusabase-livelabs %
作成したアプリケーションは、application listコマンドで一覧できます。
fusabase-livelabs % fusabase application list
✔ Fetched Successfully :
Project ID App ID App Name App Type Active
573E3A97FC7320ADE063020012AC296D 578E20ADE7B7710BE063020012AC935F RecipeShare IOS 1
573E3A97FC7320ADE063020012AC296D 57A620B87BE604F8E063020012AC8D05 RecipeShareWeb web 1
573E3A97FC7320ADE063020012AC296D 578F1539F98EA50AE063020012AC11EF com.oracle.fusabase.recipeshare ANDROID 1
fusabase-livelabs %
アプリケーションの削除はapplication deleteコマンドで行います。削除対象のApp IDを指定します。
fusabase application delete --appid=57A620B87BE604F8E063020012AC8D05
fusabase-livelabs % fusabase application delete --appid=57A620B87BE604F8E063020012AC8D05
✔ Successfully deleted the application
fusabase-livelabs %
あらかじめ、アプリケーション名とタイプを記載したJSONファイルを用意することで、対話せずにアプリケーションの作成ができます。
{ "APP_NAME": "RecipeShareWeb", "APP_TYPE": "web" }
fusabase application create --path=app.json
fusabase-livelabs % fusabase application create --path=app.json
✔ Application Created Successfully!!
{"APP_ID":"57A620B87BE704F8E063020012AC8D05"}
fusabase-livelabs %
作成したアプリケーションの構成データは、application getコマンドで取得します。application listコマンドよりApp IDを確認しておきます。
fusabase-livelabs % fusabase application get --appid=57A620B87BE704F8E063020012AC8D05
✔ Response data:
{
"schema": "testuser",
"app_name": "RecipeShareWeb",
"app_type": "web",
"app_id": "57A620B87BE704F8E063020012AC8D05",
"objs_type": "dbfs",
"project_id": "573E3A97FC7320ADE063020012AC296D",
"storage_bucket": "dbfs_CXJHFAIIZAPLDEH",
"auth_type": "base",
"auth_id": "573E3A97FC7720ADE063020012AC296D",
"ords_host": null
}
fusabase-livelabs %
以上で、CLIでアプリケーションの作成ができました。
Backendを初期化する
fusabase-livelabs % fusabase auth list
✔ Successfully fetched service details
auth type:base
✔ Fetched Successfully!!
First Name Last Name Email UUID Provider Verified Active Ctime
fusabase-livelabs %
CLIから作成したユーザー(auth addで作成したユーザー)は、auth listで一覧されます。
fusabase-livelabs % sh list-users.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 394 0 394 0 0 11455 0 --:--:-- --:--:-- --:--:-- 11588
"first_name","last_name","username","email","uuid","provider","display_name","verified","active","creationTime","lastSigninTime"
"-","-","test@example.com","test@example.com","57A67E98FC627120E063020012ACF888","UserNamePassword","- -","false","true","2026-07-28T06:07:35.897414Z","2026-07-28T06:18:34.300295Z"
fusabase-livelabs %
fusabase auth delete --username=test@example.com
fusabase-livelabs % fusabase auth delete --username=test@example.com
✔ Successfully fetched service details
auth type:base
✔ Successfully deleted app user
fusabase-livelabs %
Databaseのコレクションrecipesを削除します。
fusabase database list root
fusabase-livelabs % fusabase database list root
✔ Response data:
Collection Name Collection_Id
emp 3440030340
recipes 3905671794
fusabase-livelabs %
コレクションrecipesを削除します。確認がなく、コマンドを実行したら即削除されるので、実行には細心の注意が必要です。
fusabase database delete recipes
fusabase-livelabs % fusabase database delete recipes
Path is : recipes
✔ Collection delete Successfully:
{"message":"success"}
fusabase-livelabs %
コレクションrecipesが削除されたことを確認します。
fusabase-livelabs % fusabase database list root
✔ Response data:
Collection Name Collection_Id
emp 3440030340
fusabase-livelabs %
Storageは作成済みのフォルダについて、storage listコマンドで内容や存在を確認できます。
fusabase-livelabs % fusabase storage list recipes
✔ Successfully fetched service details
storage type :dbfs
✔ List of Files:
----File Name----
✔ List of Directories:
----Directory Name----
/recipes/57A67E98FC6B7120E063020012ACF888
fusabase-livelabs %
しかし、Databaseのようにrootという指定が効かないため、ルート・フォルダ直下をリストする方法を見つけることができませんでした。
fusabase storage del recipes
fusabase-livelabs % fusabase storage del recipes
✔ Successfully fetched service details
storage type :dbfs
✔ Successfully deleted file from storage
fusabase-livelabs %
