本文へ移動

Web アプリと共有

ブラウザで開くアプリを作り、指定した人と共有します。

対象
CLIConsoleAPI

最終検証 · v1.4.16

Markdown

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 を上書きできるためです。