kokoichi206 / awesome-chat-app

MIT License
0 stars 0 forks source link

設計 openapi #7

Closed kokoichi206 closed 1 year ago

kokoichi206 commented 1 year ago

ログイン画面

IdP の選択

フロントから signInWithPopup() を実行する → firebase auth api

Google (各 IdP) が出す画面

アカウントを選択するとGoogleの認証が行われ、ポップアップが閉じる。 それと同時にgetIdToken()を実行し、ID トークンを取得する。 その後、

POST /api/login

→ backend to Firebase Admin SDK セッショントークンを Set-Cookie

GET /api/users/me

→ Cookie のセッションをとって、admin sdk になげて → backend to Firebase Admin SDK

kokoichi206 commented 1 year ago

トーク一覧画面

GET /api/rooms

返したい情報(1ルームごと)

ISO8601 の形式にしたい https://github.com/kokoichi206/awesome-chat-app/issues/11#issue-1738576676

response

{
  "rooms": [
    {
      "latest": {
        "content": "昨日何食べた?",
        "timestamp": "2023-05-31T12:23:11.938+09:00"
      },
      "name": "あぁの会",
      "count": 3
    }
  ]
}

考慮しないこと

kokoichi206 commented 1 year ago

トーク画面

GET /api/rooms/:roomID/users

ルームに所属する、ユーザー id とユーザー情報(名前、プロフィール画像)を紐づけるための情報

{
  "users": {
    "guid0000-0000-0000": {
      "name": "わたしの名前",
      "profile_image_url": "s3://hogehoge/pien",
      "last_read_at": "2023-05-31T12:23:00.938+09:00"
    }
  }
}

GET /api/rooms/:roomID/messages

messages > user_id

{
  "messages": {
    [
      "user_id": "",
      "timestamp": "",
      "timestamp": "",
      "timestamp": ""
  }
}
kokoichi206 commented 1 year ago

認証

backend が VerifySessionCookie を呼ぶ。

kokoichi206 commented 1 year ago

swagger のドキュメントを見ると、string に対する date-time のフォーマット指定は RFC3339 らしい。 もしかしたら ISO 8601 で統一する案はそんなよくないかもしれない(メジャーじゃないかも)。。。