DISCORDのAPIのOAuth2認証でユーザーIDを取得する際にエラーが発生する

前提

いつもお世話になっております。
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

https://discordapp.com/api/oauth2/authorize?client_id=xxxxxxxxxxxx&redirect_uri=http://XX.XXX.XX.XX/&response_type=code&scope=guilds.join # 上記ページアクセスすることでユーザー認証ページへ進めることができ# 認証に成功すると「http://XX.XXX.XX.XX?code=」の形でcodeを取得するところまでできています。# その後下記のようにPOSTしているのですが400エラーが発生します require 'uri'require 'net/http'require 'discordrb'require "json" uri = URI.parse("https://discordapp.com/api/v6/oauth2/token")http = Net::HTTP.new(uri.host, uri.port)http.use_ssl = uri.scheme === "https"params = {client_id: "xxxxxxxxxxx", client_secret: "yyyyyyyyyy", grant_type: "authorization_code", code: 受け取ったcode, redirect_uri: "http://XX.XXX.XX.XX/", scope: "guilds.join"}headers = {"Content-Type" => "Content-Type:application/x-www-form-urlencoded"}response = http.post(uri.path, params.to_json, headers) # responseが → #<Net::HTTPBadRequest 400 Bad Request readbody=true> # 正しくは下記のようなレスポンスが返ってくると思われます{ "access_token": "xxxxxx", "expires_in": 604800, "refresh_token": "", "scope": "guilds.join", "token_type": "Bearer"}

間違っている箇所をご教示ただけますと幸いです。
以上、よろしくお願いいたします。

コメントを投稿

0 コメント