2
0

HULFT Squareのリフレッシュトークンでアクセストークンを更新して実行してみた

Last updated at Posted at 2024-05-09

はじめに

こんにちは。すぎもんです:grinning:
HULFT Square にはURLを公開して外部から実行することが出来ます。(REST APIジョブ機能)
詳細は以前、Web APIとして公開して、外部サーバから HTTPリクエストで実行してみたという記事を公開したので見て頂けたら幸いです。
今回は、実行する際に、リフレッシュトークンを使用してアクセストークンを更新してから実行してみようと思います。

リフレッシュトークンは、アクセストークンの有効期限が切れた際に新しいアクセストークンを取得するために使用されるセキュリティトークンです。
これにより頻繁にログイン、更新をする必要がなくなります。

今回やること

image.png

1 ) HULFT SquareでREST APIジョブを作成する
 ➀外部からのHTTPリクエストで実行するスクリプトの作成
 ➁APIプロジェクト作成
 ➂APIクライアント作成
 ➃REST APIジョブ作成
 ➄リフレッシュトークンの取得
 
2 ) オンプレミスから実行する
 ➀Windows PowerShell作成
 ➁実行、確認

1 ) HULFT SquareでREST APIジョブを作成する

➀外部からのHTTPリクエストで実行するスクリプトの作成

今回はBoxドライブにあるファイルをAmazonS3にアップロードするスクリプトを実行します。
・プロジェクト名 :プロジェクト
・スクリプト名  :Cloud

image.png

実際に扱うCSVファイルには、このようなデータが格納されています。
image.png

➁APIプロジェクト作成

ここでは、作成したプロジェクトを、Web APIとして公開するための設定をします。
HTTP RESTのエンドポイントとなるURLの基本パス(実行するパスの一部)を作成したり、実行スクリプトと紐づけするHTTPメソッドを管理したりします。

設定は、「ナビゲーションメニュー image.png > APIマネジメント > APIプロジェクト」から設定出来ます。

・名前   : API_Project
・基本パス : API_Project_Path
作成出来たら「次へ」を押して「サマリー」ページがでましたら完了を押します。

image.png

APIプロジェクト全体のページがでましたら、リソース(※赤枠アイコン)を作成してHTTPメソッドを設定します。

image.png

リソースに「HTTPメソッドを追加 > GET」を追加します。
image.png

HTTPリクエストで実行するスクリプトの設定
ここでは、実行させるスクリプトを指定します。
今回は実行させるだけなので、実行スクリプトの設定をします。

<実行スクリプト>
設定(1)
・プロジェクト :プロジェクト ➀で作成したプロジェクト
・バージョン  :※最新バージョン 
・スクリプト  :Cloud ➀で作成したスクリプト

image.png

設定(2)
 「依存関係」ボタンをクリックし「適用」を押します。
APIプロジェクトのリソースの設定画面に戻ります。

image.png

依存関係とは
「依存関係」機能は最新版のHULFT Squareに備わった機能です。
これを使用することで、スクリプトで追加開発などをした際に自動で実行するスクリプトを最新版にバージョンアップさせることが出来ます。

ここまで出来ましたら、APIプロジェクトのリソースの設定画面一番下の「適用」を押すことで設定を保存できます。

➂APIクライアント作成

ここでは、作成したAPIにアクセスできるメンバーの設定や、実行可能なIPアドレス許可リストを設定します。

設定は、「ナビゲーションメニュー image.png > APIマネジメント > APIクライアント」から設定出来ます。

名前 : API_client
メンバー : ※自分のアカウント
IPアドレス許可リスト:※HTTP RESTリクエストをする外部サーバのIPアドレス

image.png

「IPアドレス許可リスト」は何も指定しない場合はフルオープンになります。

ここまで出来ましたら、APIクライアントの設定が完了しました。

➃REST APIジョブ作成

ここでは、作成済みのAPIプロジェクトをウェブブラウザやツールなどからのHTTP RESTリクエストによって実行可能にするジョブを作成できます。

設定は、「ナビゲーションメニュー image.png > ジョブ > REST APIジョブ」から設定出来ます。

新規追加を押下したあと作成していきます。

ワークスペース  : 実行するワークスペース
APIプロジェクト : API_Project_Path ※「➁APIプロジェクト作成」の基本パス
APIプロジェクトバージョン :最新バージョン ※更新ごとにバージョンが上がります
リソースを読み込むためのプロファイル : ※実行するプロファイルを選択

image.png

依存関係を押すと、スクリプトやプロジェクトバージョンを確認することが出来ます。
image.png

APIクライアント : API_client ※「➂APIクライアント作成」で作成した名前

image.png

「スクリプト実行のためのサービス」を設定し「次へ」を押下したあとに全体のサマリーが出ます。
設定内容を確認して、完了を押下します。

image.png

REST APIジョブが作成できました。
一覧から、作成した「API_Project_Path」が確認出来ます。

登録したAPIプロジェクトの右にある image.png を選択すると、操作メニューが表示されます。
「情報」を押下してください。

image.png

HTTPリクエストで使用するエンドポイントとなるURLが自動生成されているので確認できます。

image.png

これで、実行するためのエンドポイントとなるURLが取得出来ます。

➄リフレッシュトークンの取得

ここでは、リフレッシュトークンを取得します。
「➂APIクライアント作成」の「メンバー」で、Web APIへアクセスできるユーザを設定しましたので、メンバーに設定したユーザで実行する為に期限が切れていない最新のアクセストークンが必要になります。
自動で更新した後のアクセストークンを取得するためのリフレッシュトークンを取得します。

リフレッシュトークンとは、HULFT SquareのWeb画面ではなく、お客様環境のプログラムでAPIからアクセストークンを更新する際に使用するものです。

HULFT Square管理画面の右上にあるユーザ情報の「個人設定」を選択します。

image.png

「個人設定>アクセストークン」の「アクセストークンを生成」を押下したあと
「リフレッシュトークン」をコピーします。

image.png

これで実行する為の設定が完了しました。

2 ) オンプレミスから実行する

➀Windows PowerShell作成

ここでは、Windows PowerShellで実行出来るようにファイルを作成します。
下記コマンドの(1)(2)(3)(4)を変更して.ps1といった拡張子のファイルとして保存します。

PowerShell
# Step 1 : メールとパスワードを使ってログインAPIでアクセストークンを取得する
$email = "<(1)メールアドレス>"
$password = "<(2)パスワード>"
$response = Invoke-WebRequest -Uri "https://app.square.hulft.com/v1/users/login" -ContentType "application/json" -Method POST -Body "{""email"": ""$email"",""password"": ""$password""}"
$accessTokenEmailPassword = (ConvertFrom-Json $($response.Content)).accessToken

# Step 2 : リフレッシュトークンを使用して、Login APIでアクセストークンを取得する
$refreshToken = "<(3)リフレッシュトークン>"
$response = Invoke-WebRequest -Uri "https://app.square.hulft.com/v1/rest-api-token" -ContentType "application/json" -Headers @{"Authorization" = "Bearer $accessTokenEmailPassword"} -Method POST -Body "{""refreshToken"": ""$refreshToken""}"
$accessToken = (ConvertFrom-Json $($response.Content)).accessToken

# Step 3 : 取得したアクセストークンを使ってHTTPクライアントからREST API Job Endpointを実行する
$url = "https://<(4)REST APIジョブのURL>"
$response = Invoke-WebRequest -Uri $url -ContentType "application/json" -Headers @{"Authorization" = "Bearer $accessToken"} -Method GET

# Print the response
$response.Content
要素 説明
(1)メールアドレス HULFT Squareにログインする際に使用したメールアドレス
(2)パスワード HULFT Squareにログインする際に使用したパスワード
(3)リフレッシュトークン 「➄リフレッシュトークンの取得」で取得したもの
(4)REST APIジョブのURL 「➃REST APIジョブ作成」で発行したURL

今回は上記のコマンドをrun_steps.ps1というファイル名にしてCドライブ直下に保存します。

image.png

ここまでで、実行するファイルの作成は完了です。

➁実行、確認

ここからは、実際にPSファイルを実行してみます。
実行には下記のコマンドを使います。

実行コマンド
powershell -ExecutionPolicy Bypass -Command "& { C:\run_steps.ps1 }"

今回はどこのファイルパスでも実行できるようにフルパスで指定しましたが、Cドライブから実行する場合は、"& { .\run_steps.ps1 }"に変えても大丈夫です。

今回は、コマンドプロンプトで実行します。

image.png

実行出来たかHULFT Squareのログを確認してみます。
image.png > 監査 > REST APIジョブアクセスログ」を開くことで実行出来たか確認することが出来ます。
ステータスコードが200になっているのが確認出来ます。

image.png

AmazonS3も確認してみます。
無事に格納されているのが確認出来ます。
image.png

データも無事に格納出来ていることが確認出来ます。
image.png

最後に

いかがでしたでしょうか。外部のサーバーから実行させる際にアクセストークン毎度を更新する作業がコマンドで出来れば楽になるかと思います。
今回は、コマンドで実行してみましたが、バッチファイルにしたり、オンプレミスのシステムと連携させるのに長期的に任意のタイミングで実行させることが出来るので、使い方の幅が広がるのではないでしょうか。

このブログでは、今後も様々なTopics記事や接続検証等、皆さんの参考になるような記事を投稿していきたいと思います!
ここまで読んでいただきありがとうございました。それでは、また!:raised_hand:

2
0
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
2
0