前提
いつもお世話になっております。
RailsでWebアプリを作成しており、その中で
Discord APIのOAuth2認証を用いて、ユーザーをサーバーに追加したいのですが、ユーザーIDを得るためのトークンをAPI側から受け取る段階でエラーが発生しております。
他のAPIを叩いたときの結果は正しく返ってくることから、クライアントID、シークレットIDなどのパラメータは間違っていないものと想定されます。
■ 参考サイト(DISCORD API公式)
https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-redirect-url-example
実現したいこと
正しいレスポンスを得る(ユーザーIDを得るためのトークンの取得)
発生している問題・エラーメッセージ
#<Net::HTTPBadRequest 400 Bad Request readbody=true>
該当のソースコード
ruby
1 2https://discordapp.com/api/oauth2/authorize?client_id=xxxxxxxxxxxx&redirect_uri=http://XX.XXX.XX.XX/&response_type=code&scope=guilds.join 3 4# 上記ページアクセスすることでユーザー認証ページへ進めることができ 5# 認証に成功すると「http://XX.XXX.XX.XX?code=」の形でcodeを取得するところまでできています。 6# その後下記のようにPOSTしているのですが400エラーが発生します 7 8require 'uri' 9require 'net/http' 10require 'discordrb' 11require "json" 12 13uri = URI.parse("https://discordapp.com/api/v6/oauth2/token") 14http = Net::HTTP.new(uri.host, uri.port) 15http.use_ssl = uri.scheme === "https" 16params = {client_id: "xxxxxxxxxxx", 17 client_secret: "yyyyyyyyyy", 18 grant_type: "authorization_code", 19 code: 受け取ったcode, 20 redirect_uri: "http://XX.XXX.XX.XX/", 21 scope: "guilds.join"} 22headers = {"Content-Type" => "Content-Type:application/x-www-form-urlencoded"} 23response = http.post(uri.path, params.to_json, headers) 24 25# responseが → #<Net::HTTPBadRequest 400 Bad Request readbody=true> 26 27# 正しくは下記のようなレスポンスが返ってくると思われます 28{ 29 "access_token": "xxxxxx", 30 "expires_in": 604800, 31 "refresh_token": "", 32 "scope": "guilds.join", 33 "token_type": "Bearer" 34} 35
間違っている箇所をご教示ただけますと幸いです。
以上、よろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。