[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
Discord の OAuth2 を使ってみようと思ったのでメモ。公式ドキュメント
Discord の DEVELOP PORTAL から Discord アプリケーションを作り、CLIENT ID と CLIENT SECRET を控える。
OAuth2用の転送 URL を DEVELOP PORTAL を利用して作成する。
まず、先に作ったアプリケーションをDiscord の DEVELOP PORTAL より開き、OAuth2 を画面サブのメニューから選択。
REDIRECTS の入力欄に URL を記入する。
然る後に画面下部の OAUTH2 URL GENERATOR を使い、URL を作成する。SELECT REDIRECT URL から先に作った URL を選択したうえでその下の SCOPES を編集する。何を選んだらどうなるのかは OAuth2 Scopes 参照。
適当に SCOPES を設定したらその下に URL と Copy と書かれたボタンが並んでいるので Copy をクリックして転送 URL を取得する。この URL を控えておくこと。
先に取得した転送 URL にアクセスする。Discord へのログインを要求されるのでログインする (すでにログインしていたらされないかもしれない)。なんか尋ねられるので確認し、下部の認証をクリックする。OAuth2 用の URL を指定した時の URL に飛ばされるが、URL 末尾に ?code=XXXXX
(XXXXX はランダムな文字列) とある。この XXXXX が「code」なのでこれを控える。これはアクセス token 取得の度に生成する必要がある。
discord サーバに対して post を送って取得する。ここでは curl してみる。
curl -X POST -H "Content-Type:application/x-www-form-urlencoded" \ -d "redirect_uri=${REDIRECTS の URL を JS の encodeURIComponent で encode したもの}&\ scope=${SCOPES の各項目を + で繋いだもの}&\ client_id=${先に控えた CLIENT ID}&\ client_secret=${先に控えた CLIENT SECRET}&\ grant_type=authorization_code&\ code=${先に控えた code}" \ https://discordapp.com/api/oauth2/token
妥当に実行できると以下のような返答が得られる。
{ "access_token": "ランダムな文字列", "scope": "SCOPES の各項目を半角スペースで繋いだもの", "token_type": "Bearer", "expires_in": 604800, "refresh_token": "ランダムな文字列" }
とりあえず自分が誰なのか取得してみる。
curl -H "Authorization: Bearer ${先に取得した access_token}" \ https://discordapp.com/api/users/@me
作ったアプリを特定のサーバにいる人だけに利用させたい場合なんかに使えそう
curl -H "Authorization: Bearer ${先に取得した access_token}" \ https://discordapp.com/api/users/@me/guilds
DEVELOPER PORTAL の RESOURCES 以下にいろいろ書いてある。
認可のための機能なのでこれで得た token でメッセージの投稿とかはできない。
ただいまコメントを受けつけておりません。