Discordのアプリを作る
サーバー版(Cloudflare版と、Vercel版の部屋のサーバー)では、GMとPLがDiscordのアカウントでログインして部屋に入ります。そのために、サーバーを置く人が、Discordのアプリを1つ作ります。このページは、その作りかたの手順です。かかる時間は10分ほどです。
アプリといっても、プログラムを書くわけではありません。Discordに「このサーバーからログインを頼む」と登録し、ログインに使うClient IDとClient Secretを受け取るだけです。ボット(Bot)は作りません。
Discordの画面の言葉
Discord Developer Portal(アプリを作る画面)は英語で表示されます。このページでは、ボタンやメニューの名前を画面の表示のまま英語で書きます。
0. 用意するもの
- Discordのアカウント(ふだん使っているもので構いません)
- 部屋のサーバーのURL(手順3で使います。まだ決まっていなければ、手順2まで進めて、あとで戻ってきます)
1. アプリを作る
- Discord Developer Portalを開き、Discordのアカウントでログインします。
- 右上のNew Applicationを押します。
- 「Create a new app」の画面で、Nameに名前を入れます。この名前は、ログインのときにDiscordが出す確認の画面で、ログインする人に見えます。卓や配信の名前にすると分かりやすくなります(例:
Udonarium Axe)。 - Teamの欄は、Discordのチームに入っている人にだけ出ます。出たときは、Personalのままにします。
- 「By clicking Create, you agree to the Discord Developer Terms of Service and Developer Policy.」のチェックを入れます。開発者向けの規約に同意するという意味です。
- 名前とチェックがそろうと、Createが押せるようになります。押します。
- 人間かどうかを確かめる画面が出たら、案内に従って答えます。
アプリの画面(General Information)が開きます。アイコンや説明は、入れなくても動きます。
2. Client IDとClient Secretを控える
- 左のメニューのOAuth2を開きます。
- Client informationの欄の、Client IDの下のCopyを押し、どこかに貼り付けて控えます。
- Client Secretは、「Hidden for security」と伏せてあります。その下のReset Secretを押します。
- 「Regenerate Secret Key?」と、本当に作り直すかを尋ねられます。作ったばかりのアプリなので、作り直しても困ることはありません。Yes, do it! を押します。2段階認証を設定しているアカウントでは、6けたの確認のコードを求められることがあります。
- 「A new token was generated! Be sure to copy it as it will not be shown to you again.」と出て、新しいClient Secretが見えるようになります。Copyを押して控えます。
Client Secretは一度しか出ません
画面を離れると、Client Secretはもう見られません。控え忘れたときは、もう一度Reset Secretを押して作り直します。作り直すと前のものは使えなくなるので、サーバーに入れた値も入れ替えます。Client Secretは、ほかの人に見せないでください(→ 設置の準備)。
控えた2つは、サーバーの設定に入れます。
| サーバーの設定の名前 | 入れるもの |
|---|---|
DISCORD_CLIENT_ID | Client ID |
DISCORD_CLIENT_SECRET | Client Secret |
3. 戻り先のURLを登録する
Discordでログインしたあと、Discordは決められたURLにだけ戻ります。
- Axe参加者が「Discordでログイン」を押します。
- 部屋のサーバーDiscordのログインの画面へ送ります。
- Discord参加者が、ログインを許可します。
- 部屋のサーバーDiscordが、登録された戻り先へ戻してきます。
https://このURLを、Discordのアプリの「Redirects」に登録します<部屋のサーバーのドメイン> /v1 /login /discord /callback - Axeログインした名前が出ます。
その戻り先として、部屋のサーバーのURLを登録します。部屋のサーバーのURLは、デプロイが終わると決まります。
Discord Developer Portalで、作ったアプリを開き、左のメニューのOAuth2を開きます。
Redirectsの欄のAdd Redirectを押します。すでに1つ登録してあるときは、ボタンの名前がAdd Anotherになっています。
出てきた欄に、次の形のURLを入れます。
texthttps://<部屋のサーバーのドメイン>/v1/login/discord/callback部屋のサーバー 入れるURLの例 Cloudflare版(workers.dev) https://udonarium-axe-backend.yourname.workers.dev/v1/login/discord/callbackVercel版 https://my-udonarium-rooms-vercel.vercel.app/v1/login/discord/callbackカスタムドメイン https://backend.example.com/v1/login/discord/callback画面の下に「Careful — you have unsaved changes!」という帯が出るので、Save Changesを押します。押さないと、登録されません。
帯が消えれば、登録できています。「You provided an invalid redirect URI.」と出たときは、URLの形が違います。
https://から始まっているか、前後に空白が入っていないかを確かめます。
ドメインの部分は、Axeのconfig.jsonのbackend.urlに書くのと同じにします。URLは上の形のとおりに書き、末尾に/を付けません。1文字でも違うと、ログインのときにDiscordがInvalid OAuth2 redirect_uriを出します。カスタムドメインを付けたときなど、ドメインを変えたときは、新しいURLを足します。戻り先は、1つのアプリに複数登録できます。運営する人の管理画面を使うときは、同じドメインで末尾を/admin/login/callbackにしたURLも足します(→ 管理画面とBAN)。
ほかの設定について
ログインに使うのは、ここまでの設定だけです。Botの画面や、OAuth2の画面のOAuth2 URL Generatorは使いません。OAuth2の画面のPublic Clientは、オフのままにします。部屋のサーバーがDiscordに求めるのはidentifyだけで、ログインした人のユーザーID、名前、アイコンを受け取ります。メールアドレスや、入っているサーバーの一覧は求めません。