Web アプリと共有
ブラウザで開くアプリを作り、指定した人と共有します。
Web アプリは、ブラウザから Handler を使うための画面です。 開けるのは所有者と、メールアドレスを指定して共有した人だけです。 誰でも開ける公開モードはありません。
1. コードを保存する
次のコードを hello-web.js として保存します。
export default {
async fetch(request, env) {
return new Response('<!doctype html><h1>Hello, Wings</h1>', {
headers: { 'Content-Type': 'text/html; charset=utf-8' },
})
},
}
2. Web アプリとして登録する
wings handler deploy --name hello-web --file hello-web.js
wings handler list
一覧に出た ID を <handler-id> に入れます。
次のコマンドで Web アプリを作り、URL を確認してください。
wings trigger add-web <handler-id> --slug hello-web
wings trigger list <handler-id>
wings trigger url <handler-id> <trigger-id>
<trigger-id> は Trigger の一覧に出た ID です。
表示された URL をブラウザで開き、Console でログインします。
「Hello, Wings」が表示されれば成功です。
ログイン状態について
アプリのセッションは24時間です。 通常は、Console からのログアウトでもアプリからログアウトします。 ただし、Web アプリからログアウトできなかったという警告が出た場合は、ログイン状態が最大24時間残ることがあります。 共有端末では、その警告が出ていないか確認してください。
アプリの無効化や削除、共有解除でも、対象のセッションを終了します。 アプリを無効にしても共有設定は残ります。 削除すると共有設定も消えます。
人を招待する
wings trigger share <handler-id> <trigger-id> --email teammate@example.com
wings trigger shares <handler-id> <trigger-id>
wings trigger unshare <handler-id> <trigger-id> --email teammate@example.com
招待メールは送られません。
share で追加したら、アプリの URL を本人に渡してください。
招待された人は、指定されたメールアドレスの AGIラボアカウントでログインします。
無料アカウントで利用できます。
閲覧だけで Wings の利用開始や無料枠の作成にはなりません。
| 上限 | 無料枠 | 会員 |
|---|---|---|
| 1アプリ | 5人 | 20人 |
| アカウント全体の異なるアドレス | 20人 | 100人 |
| 直近24時間の追加 | 30件 | 30件 |
共有相手を削除しても、直近24時間の追加回数は戻りません。
shares で現在の人数と上限を確認できます。
sharing_unavailable が返る場合は、今のアカウントでは共有相手を追加できません。
一覧の確認と削除はできます。
共有相手ができることを決める
招待された人も、所有者の Handler を動かします。 その Handler を通じて所有者の Connection、Secret、Database を使います。 実行時間も所有者の枠から使います。 表示内容だけでなく、データを変更する操作にも権限の確認を入れてください。
env.WINGS_VIEWER で閲覧者を確認できます。
email はメールアドレス、role は所有者なら owner、共有相手なら member です。
この値は Handler から書き換えられません。
Web アプリ以外の Run や、呼び出し先の子 Handler では undefined です。
Web アプリの Run は毎分・毎時の Run 回数には含めません。 1日の実行時間と、Web アプリ専用のアクセス上限は使います。
開発時の制限
- アプリごとに
agi-wings.appの別の URL を使います。トップは/です。 - GET、HEAD、POST に対応します。POST はアプリ自身のページから送ってください。
- 要求は256 KiB、応答は1 MiBまでです。
/_wings/はサービスが使う予約パスです。 - GET でデータを書き換えないでください。
- Service Worker、iframe での表示、別のアプリからの fetch は使えません。
- 応答はブラウザに保存しない設定(
private, no-store)です。 - リダイレクト先は同じアプリ内に限ります。外部サイトには転送できません。
Web アプリが開かなくなったとき
別のアプリが保存した Cookie の影響で、Web アプリが開かなくなる場合があります。
ブラウザの設定で agi-wings.app のサイトデータを消すと、直る場合があります。
サイトデータを消すと、localStorage のデータも消えます。 残す必要があるデータは Database に保存してください。
アプリの認証には、独自の Cookie ではなく env.WINGS_VIEWER を使います。
同じサイトの別アプリが、JavaScript で作った Cookie を上書きできるためです。