AlteryxでSpotify APIの認可を試してみた #alteryx_ug

当エントリは『Alteryx User Group in 東京 Advent Calendar 2018』17日目のエントリです。

昨日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"プログラムについて」の予定です。お楽しみに!!