リフレッシュトークンとは?
Microsoft Graph APIを使用するには、アクセストークンを取得する必要があります。ただ1度アクセストークンを取得したとしても有効期限は1時間のため、すぐに使えなくなってしまいます。ここで必要になるのがリフレッシュトークンです。リフレッシュトークンでアクセストークンを更新した際に新しいリフレッシュトークンも発行されます。その度に新しいリフレッシュトークンに乗り換えていくことによってアクセストークンを継続して取得できるようになり、APIを使い続けることが可能になります。
この記事ではリフレッシュトークンを取得する方法をできる限り簡潔に紹介します。
前提条件
まず大前提として、AzureポータルのAzure Active DirectoryからMicrosoft Graphのアプリ登録をする必要があります。登録を終えた後、下記4点が必要になりますのでどこかに記録しておきます。
・クライアントID
・シークレットID
・リダイレクトURL
・テナントID
codeを取得する
リフレッシュトークンを取得するためにPOSTリクエストを送るのですが、その際に「code」というものが必要になります。codeを取得するには、以下のURLをブラウザに貼り付けます。
https://login.microsoftonline.com/{テナントID}/oauth2/v2.0/authorize?client_id={クライアントID}&response_type=code&redirect_uri={リダイレクトURL}&response_mode=query&scope=offline_access%20user.read%20mail.read%20calendars.readwrite&state=12345
そうすると、新しいページにリダイレクトされます。
その際に、新しくなったURLの「code=」の部分を確認し控えておきます。
リフレッシュトークンの取得方法
ここでは、node.jsでのコードになります。(axiosを使用しております)
const redirect_uri = "リダイレクトURL"
const client_id = "クライアントID"
const Tenant = "テナントID"
const client_secret = "シークレットID"
const axios = require("axios");
const qs = require("querystring");
const token_endpoint = "https://login.microsoftonline.com/" + Tenant + "/oauth2/v2.0/token";
let code = "③にて取得したcode"
async function main() {
let data = {
grant_type: "authorization_code",
client_id: client_id,
client_secret: client_secret,
redirect_uri: redirect_uri,
code: code,
};
let opt = {
method: "POST",
data: qs.stringify(data),
url: token_endpoint,
};
let result = await axios(opt)
console.log(result.data)
}
main()
上記のコードにて、リフレッシュトークンを取得することができます。
まとめ
リフレッシュトークンを取得できれば、実際にAPIを用いて、カレンダーやメールなどさまざまな情報の取得や更新などができるようになります。
かなりざっくりとした説明になってしまいましたが、最後まで呼んでいただきありがとうございます!
(続編に繋ぐ)