LoginSignup
0
4

More than 1 year has passed since last update.

Microsoft Graph APIのリフレッシュトークン取得

Last updated at Posted at 2021-06-28

リフレッシュトークンとは?

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を用いて、カレンダーやメールなどさまざまな情報の取得や更新などができるようになります。
かなりざっくりとした説明になってしまいましたが、最後まで呼んでいただきありがとうございます!
(続編に繋ぐ)

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4