AlteryxでSpotify APIの認可を試してみた #alteryx_ug
当エントリは『Alteryx User Group in 東京 Advent Calendar 2018』17日目のエントリです。
- Alteryx User Group in 東京 Advent Calendar 2018 - Qiita
- Alteryx User Group in 東京 Advent Calendar 2018 | シリーズ | DevelopersIO
昨日16日目の記事はtruestarのVoさんによる『ゲレンデ情報をAlteryxを使って調べてみた (Spatial Tools編)』でした。
はじめに
皆さんはSpotifyというサービスを知っていますか?定額で数多の楽曲が聴き放題になるやつです。かくいう私も有料ユーザーなのですが、過去にこんなエントリを書いたことがあります。
上記ではSort Your Musicというサービスを使用して楽曲データを取得しています。しかし、実のところ、この方法は、あまり格好良くありません。Spotifyの楽曲データを取得するスマートなやり方は別にあります。それは、Spotify APIを使用して取得することです。
実は、弊社ブログには既にSpotify APIについて解説しているエントリがあります。
他のAPIも似たようなものだと思いますが、Spotify APIを使用して各種データにアクセスするためには、トークンを発行する必要があります。そして、そのトークンを発行するためには、認可を得る必要があります。
上記エントリを見ればわかるのですが、Spotify APIの認可を得る方法は3種類あります。詳細は上記エントリを読んでいただきたいのですが、取得したいデータによっては「Authorization Code」で認可を得ないといけない場面も出てくるかと思います。しかし、この「Authorization Code」方式は結構面倒くさいです。
そこで、その面倒な「Authorization Code」方式の認可をAlteryxでやってみよう、というのが当エントリの内容となります。
参考
環境
- Alteryx Designer 2018.4
- 日本語版
Spotify APIの準備をする
登録など
まず、下記の「クライアントアプリケーションの登録を行う」というところまで作業を行います。
認可に必要なコードを取得するための準備
トークンを取得するためには、あるコードが必要なのですが、そのコードを得るためには、まず下記URLにアクセスします。
https://accounts.spotify.com/authorize?response_type=code&client_id=[クライアントID]&scope=[スコープ名]&redirect_uri=[リダイレクトURI]
いくつか入力しなければいけない項目があるので、説明します。
クライアントID
Spotify for Developersのダッシュボード画面にあります。
スコープ
この認可を通じてAPIを使用するわけですが、その際に取得したいデータの種類を、この段階で指定します。どのようなものがあるかは、下記をご覧ください。
リダイレクトURI
Spotify for Developersのダッシュボード画面からEDIT SETTING画面に遷移した先の「Redirect URI」に設定したものを指定します。今回はAlteryxで認可を得るのが目的なので、あまり深く考えずhttp://localhost:8888/callback
とかで問題ありません。
認可に必要なコードを取得する
これらの値について確認できたところで、上記URLにアクセスしてみましょう。すると、下記のようになりますので、ログインします。
赤枠の「code」ってパラメータが、認可に必要なコードとなります。Alteryx上で使用しますので、ちゃんと控えておきましょう。
Alteryx Designerでワークフローを作成して認可を行う
「いつになったらAlteryxでてくるんや」って感じですが、お待たせいました。ここからワークフローを作成してきます。先に全体像をお見せします。
先に言ってしまうと、下記公式ドキュメントに記載されている方法を、Alteryxワークフローに落とし込んでます。
結構面倒なSpotify APIの認可も、これを一度実行すれば、もうトークンがGETできちゃいます。では、ツール毎に説明してきます。
1. テキスト入力ツール
下記の列と値を入力します。
POST
https://accounts.spotify.com/api/token
を入力します。
grant_type
authorization_code
を入力します。
code
上記「認可に必要なコード」で取得した値を入力します。
redirect_uri
上記「認可に必要なコード」で使用したものと同じ。
client_id
上記「認可に必要なコード」で使用したものと同じ。
client_secret
Spotify for Developersのダッシュボード画面にあります(SHOW CLIENT SECRETを選択)。
2. フォーミュラツール
下記の計算式を設定し、結果を新規列「Authorization」に格納します。
[client_id]+":"+[client_secret]
3. Base64エンコーダーツール
先ほどのフォーミュラで作成した「Authorization」を指定します。
4.フォーミュラツール
下記の計算式を設定し、結果を列「Authorization」に格納します。
"Basic " + [Base64_encoded]
5.ダウンロードツール
必要な値と計算が、一通り終わったところで、いよいよトークン取得のためにSpotify APIにアクセスします。
ベーシック
画像の通りです。
ヘッダー
「Authorization」を指定します。
上記「Authorization Guide」には、ヘッダーパラメータに指定する値として、下記のように書かれています。
The field must have the format: Authorization: Basic < base64 encoded client_id:client_secret >
ワークフロー序盤の計算は、この値を作るためのものでした。
ペイロード
下記の値を指定してPOSTします。
- grant_type
- code
- redirect_uri
6.選択ツール
ダウンロードツールで取得したデータのみに絞ります。
7.JSONパースツール
返ってきたデータはJSON形式なので、このツールでパースします。
いざ実行
上記のワークフローを実行します。パラメータ等に間違いがなく、成功すると下記のデータが確認できます。
「access_token」がSpotify APIを使用するためのトークンです。これが取得できたってことは認可処理に成功したということです。これで、Spotify APIを使うことが出来ますね。
トークンの更新もAlteryxで
上記で紹介したワークフローで取得したデータをよく見ると「expires_in」「3600」という値があります。要するにこのトークンの有効期間は取得したときから3600秒…つまり60分が有効期限となります。
つまり、有効期限を超えてAPIを使用したい場合は、トークンを更新しないといけません。…ご安心下さい。トークンの更新もAlteryxでできます。
というわけで、先ほどのワークフローをコピーしましょう。トークンの更新用ワークフローは、先ほどのワークフローを少しだけ変えればすぐにできます。
テキスト入力ツール
「refresh_token」を追加します。値は、先ほどのワークフローで取得したデータに入っています。つまり、更新用のトークンも一緒にもらっている、ということですね。
ダウンロードツール
ペイロードで指定する項目を以下に変更します。
- grant_type
- refresh_token
そして実行
上記の変更が完了したらワークフローを実行しましょう。下記のデータが取得できるはずです。
更新されたトークンをGETできました。今度から、トークンを更新するときは、このワークフローを実行するだけで済みますね。
おわりに
Alteryxは前処理や機械学習など、データ自体をグリグリ回すイメージが強いですが、APIの認可というデータを取得する前の処理なんかもできちゃいます。今回は認可部分だけを単独で紹介しましたが、そのままトークンを使って、実際にSpotify APIのデータをとってきてAlteryxで処理や集計をする…といったことも可能なはずです。データに関するあらゆることがAlteryxだけで済むのは、本当にすごいですよね。
そして明日2018年12月18日の18本目は、弊社yamaによる「未来のデータサイエンティストを育てる"Alteryx for Good"プログラムについて」の予定です。お楽しみに!!