忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/05    04« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »06

Discord の新しい API 用 URL がブラウザから叩けない

数か月前に Discord の API のドメインが discordapp.com から discord.com に変更された。古いドメインは11月上旬に廃止されるとのことだ。7月中旬に以下のような DM が bot を持っている人には送られてきており、通知されている。

Last month, we excitedly announced our official move to discord.com. It was a long time in the making, and the work isn't done yet! For now, our API will continue to handle requests made to discordapp.com. On November 7, 2020 we will be dropping support for the discordapp.com domain in favor of discord.com. Please ensure that your libraries, bots, and applications are updated accordingly.

Due to technical constraints, our CDN domain will not be migrated and will remain cdn.discordapp.com for the foreseeable future.


しかし、Using DiscordBot from React app · Issue #2078 · discord/discord-api-docsを見る限りブラウザからは普通の手段では新しい Discord の API が持つドメイン(discord.com) を使って Discord の API を叩くことはできなくなったようだ。以下にざっと Using DiscordBot from React app · Issue #2078 · discord/discord-api-docs を翻訳したものを載せる。


mashovozka 09/15

React 製のアプリから Discord にログインしようとしているんだけど、403エラーが返ってきます。この原因がわかりません。他のアプリからだと上手くログインできています。何かご存知の方はいらっしゃいませんか?

Taarek 09/15

403エラーのレスポンスに含まれている JSON はなんといってますか?

多分 UserAgent が上手く入っていないと思います。

mashovozka 09/15

ありがとうございます!返ってきた JSON にはFailed to load response dataとありました。なお、token を再生成して試してみましたが上手くいきませんでした。UserAgent が上手く入ってない、というのはどういう意味でしょうか?

Taarek commented 09/15

https://discord.com/developers/docs/reference#user-agent を確認してみてください。Discord または CloudFlare がリクエストをはじいていると思われます。

(あまり本題と関係ないので省略)

mashovozka 09/15

You need to follow this https://discord.com/developers/docs/reference#user-agent otherwise Discord/CloudFlare might deny your request(s).

Taarek さん、リンクの共有ありがとうございます。私は以下のように Discord にリクエストを送っています。

// token は本当の値とは違う値を使っています
bot.login("NzU1MzIxMDc1Nzg0NjEzOTI4.X2BlkQ.NM16N7hOajUhqca9FPdSvbxgGs4");

UserAgent を追加する必要があるようですが、ユーザエージェントはDiscordBot ($url, $versionNumber)というフォーマットのようでした。私はリクエストに UserAgent をどのように記載するべきなのでしょうか? また、この $versionNumber はどこの値を入れるべきなのでしょうか?

night 09/24

ブラウザがもつ UserAgent の情報は変更できないため、ブラウザから Discord に接続するのは無理でしょう。なんらかのサーバサイドサービスを用意する必要があります。

(以下はあまり本題と関係ないので省略)


確かにブラウザの User Agent の設定を変更してリクエストしてみたら問題なくサーバに接続できた(【JavaScript】ユーザーエージェントの取得と変更 - Qiita)。しかしエンドユーザにこれを要求するのは現実的ではない。また、User Agent を JavaScript から偽造することはできない。

PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R