OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのか


link

photo credit: Wojtek Gurak Linked Hybrid via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズをお送りしています。

前回の記事はこちら!

OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説
GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズです。今回は、OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説します。

OAuth2ライブラリでマネーフォワードクラウド請求書API用の「サービス」を作るスクリプトを解説しました。

今回は、その続き。

OAuth2 for Apps Scriptライブラリがどうやって認証用URLを作成しているのかを解説します。

では、行ってみましょう!

前回までのおさらい

前々回の記事では、OAuth2ライブラリでマネーフォワードクラウド請求書APIへの認証を行い、アクセストークンを取得する流れをざっと説明しました。

まず、以下のauthorize関数を実行するんでしたね。

/**
 * 認証を行いアクセストークンをログ出力する
 */
function authorize() {
  const service = getMFInvoiceService_();
  const authorizationUrl = service.getAuthorizationUrl();
  console.log(authorizationUrl);
}

すると、getMFInvoiceService_関数が呼び出されて、マネーフォワードクラウド請求書API用の「サービス」が作成されます。

/**
 * 指定した名前で新しいMFクラウド請求書のサービスを作成する
 */
function getMFInvoiceService_() {
  
  const serviceName = 'mfInvoice';
  const authorizationBaseUrl = 'https://invoice.moneyforward.com/oauth/authorize';
  const tokenUrl = 'https://invoice.moneyforward.com/oauth/token';
  
  const properties = PropertiesService.getScriptProperties();
  const clientId = properties.getProperty('CLIENT_ID');
  const clientSecret = properties.getProperty('CLIENT_SECRET');
  
  return OAuth2.createService(serviceName) 
      .setAuthorizationBaseUrl(authorizationBaseUrl)
      .setTokenUrl(tokenUrl)
      .setClientId(clientId)
      .setClientSecret(clientSecret)  
      .setCallbackFunction('authCallback_')
      .setPropertyStore(PropertiesService.getUserProperties())
      .setScope('write');
}

前回は、このgetMFInvoiceService_関数の解説をしました。

今日は、そのサービスが作成された後に行われている、認証URLの作成とそのつくりについて解説を続けます。

マネーフォワードクラウド請求書URLの認証用URL

認証用URLを取得する

サービスを作成された後、authorize関数でいうと6行目が実行されます。

getAuthorizationUrlメソッドは、その名の通り、認証用URLを取得するメソッドです。

OAuth2Serviceオブジェクト.getAuthorizationUrl()

これで取得した長ーい認証用URLをログ出力したのが以下の画面です。

認証用URLをログ出力

これをブラウザで入力すると、マネーフォワードクラウド請求書APIの認証画面に遷移しましたよね。

認証用URLのつくり

さて、この認証用URLのつくりが、どのようになっているか見てみましょう。

ログ出力されたURLを見ると、つくりとしては、以下のようになっていることがわかります。

https://invoice.moneyforward.com/oauth/authorize?client_id=[client_id]&response_type=code&redirect_uri=[redirect_url]&state=[state]&scope=[scope]

分解すると、以下のパーツにわけられます。

項目
認証用ベースURL https://invoice.moneyforward.com/oauth/authorize
client_id アプリケーション作成時に発行されたclient_id
response_type code
redirect_uri リダイレクトURL(アプリケーション作成時に入力したものと同じ)
state stateパラメーター
scope write

認証用ベースURL、client_id、scopeについては、前回解説したとおりサービス作成時に設定したものでしたね。

response_type、redirect_uriおよびstateは、getAuthorizationUrlメソッド実行時に生成されるものです。

リダイレクトURLはこのプロジェクトのスクリプトIDを使えば作れるURLです。

stateパラメーターは悪意あるユーザーの攻撃を防ぐためのものですが、詳しくは以下記事で解説されているのでご覧ください。

OAuthやOpenID Connectで使われるstateパラメーターについて | SIOS Tech. Lab
こんにちは、サイオステクノロジー技術部 武井です。今回は、OAuthやOpenID Connectで使われるstateパラメーターについて書いてみました。どうして、stateパラメータが必要なのか、stateパラメーターがないとどんな悪いことが起こるのか整理しました。 stateパラメーターとは?

つまり、getAuthorizationUrlメソッドは、サービス作成時に渡した設定値などを使って、認証用URLを生成するメソッドということです。

このURLにアクセスすることで、マネーフォワードクラウド請求書APIの認証画面を開くことができるというわけです。

まとめ

以上、OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのかを解説しました。

次回は、マネーフォワードクラウド請求書APIの認証画面で許可された後の動作について解説します。

OAuth2 for Apps Scriptライブラリはどうやってアクセストークンを取得するのか
GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズです。今回は、OAuth2ライブラリはどうやってアクセストークンを取得するのかについて解説します。

どうぞお楽しみに!

連載目次:【初心者向け】GASでマネーフォワード請求書API

マネーフォワード請求書APIを使用することで、GASからマネーフォワード請求書のデータを取得したり、操作をしたりすることが可能です。このシリーズでは、そのはじめの一歩として、マネーフォワード請求書APIとは何か?またGASによるアクセスの初歩をお伝えしていきます!
  1. はじめてのマネーフォワード請求書API~その概要とおおまかな手順
  2. マネーフォワード請求書APIへのアクセスをテストしてみよう!
  3. GAS用のマネーフォワード請求書APIアプリケーションを作成する手順
  4. GASでAPIを操作をする強い味方「OAuth2 for Apps Script」ライブラリとその導入
  5. GASでマネーフォワードクラウド請求書APIへの認証とアクセストークンの取得を行う方法
  6. OAuth2 for Apps Scriptライブラリを使ってサービスを作るスクリプトを解説
  7. OAuth2 for Apps Scriptライブラリはどうやって認証用URLを作成しているのか
  8. OAuth2 for Apps Scriptライブラリはどうやってアクセストークンを取得するのか
  9. GASではじめてのマネーフォワードクラウド請求書APIへリクエスト
  10. マネーフォワードクラウド請求書APIから請求書一覧の取得をテストしてみよう!
  11. マネーフォワードクラウド請求書APIによる請求書一覧のデータを読み取ってみよう!
  12. GASでマネーフォワード請求書の請求書一覧を取得するスクリプト
  13. GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法
  14. マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト

タイトルとURLをコピーしました