WorkflowだけでOAuth2.0認証を実行する (Pocket API)

WorkflowがAppleに買収され、iOSのより深い部分の機能にアクセスできるようになる事が期待されますが、その一方でサードパーティのアプリに関するアクションの漸減が予想されています。
既に昨日のアップデートで、PocketやLINEなどのアクションが削除されました。

削除されたものは、自分でなんとかするしかありません。
Send Message via Lineなど、URLスキームを内部で実行しているだけのアクションは比較的容易ですが、Get Items from PocketなどはGet Contents of URLを使用してWeb APIにアクセスする必要がありますので難易度はかなり高くなります。
ですが、アプリの無料化により特に英語圏でユーザーが激増しますので、Web APIを簡単に利用できる自作アクションもぼちぼち出てくるのではないかと思います。


Web APIを利用する上でしばしば突き当たるのが、OAuthによるユーザー認証の壁です。
今回は、PocketのAPIを例にしてWorkflowだけでOAuth2.0認証を行う方法を簡単に紹介したいと思います。
なお、OAuthのバージョン1.0は2.0とは比較にならないほど複雑ですので、Workflowでなんとかしようとは考えないほうがいいでしょう。

後日、今回獲得したアクセストークンを使用してPocket APIにアクセスする自作アクションを紹介する予定です。

前準備

  1. Pocket APIにアプリを登録
     
    https://getpocket.com/developer/を開き、ログインして「CREATE NEW APP」をクリック
    f:id:four_or_three:20170324153658j:plain
     
    モバイルビューが用意されていませんので、PCからのほうが作業しやすいです。
     
    次に、特にこだわりがなければ、↓ のスクリーンショットと同じように設定し、「CREATE APPLICATION」をクリック
    f:id:four_or_three:20170324161826p:plain
     
    この次の画面で表示される「CONSUMER KEY」が認証作業で必要になります。
    f:id:four_or_three:20170324162200p:plain

  2. ワークフローをインポート
    https://workflow.is/workflows/290070d6dc7746feb6830b175849851e
    Pocket APIのOAuth2.0認証を実行するワークフローです。
    既に完成されていますので、認証するだけならワークフローを実行して指示通りにタップしていくだけで30秒ほどで終わります。

認証の流れ

Pocket APIを使用するには、コンシューマーキーとアクセストークンの2つが必要です。
コンシューマーキーは既に持っていますので、アクセストークンの取得が認証作業の最終目標になります。

認証処理は3つのステップに分かれています。

  1. コンシューマーキーを使用して、リクエストトークンを発行
  2. リクエストトークンをPocketアプリへ渡し、認証ボタンを押してリクエストトークンを有効化する
  3. 有効化されたリクエストトークンを使用し、アクセストークンを発行

↓ のドキュメントと比較しながら一つずつ見ていきます。
Pocket Developer Program: Pocket Authentication API: Documentation

1. リクエストトークンの発行

ドキュメントのSTEP 2の部分です。
Get Contents of URLを用いてPocketのサーバにコンシューマーキーを送り、リクエストトークンを取得します。

▼ドキュメント
f:id:four_or_three:20170324171743p:plain

▼Workflow
f:id:four_or_three:20170324165310p:plain:w250

Get Contents of URLから

{"code":"リクエストトークン"}

というDictionaryが出力されますので、Get Dictionary Valueで値を取り出し、変数に格納してこのステップは終了です。

2. リクエストトークンの有効化

ドキュメントのSTEP 3,4の部分です。
前のステップで取得したリクエストトークンをURLスキームを用いてPocketアプリへ渡し、表示された画面で「認証」をタップしたのち、Workflowに戻ってきます。

▼ドキュメント
f:id:four_or_three:20170324171150p:plain

▼Workflow
f:id:four_or_three:20170324172207p:plain:w250

この処理により、リクエストトークンが有効化されます。
Pocket側からWorkflowに返却されるレスポンスはありません。

3. アクセストークンの発行

ドキュメントのSTEP 5の部分です。
前のステップでリクエストトークンが承認されましたので、それを用いて最終目標のアクセストークンを取得します。

▼ドキュメント
f:id:four_or_three:20170324174305p:plain

▼Workflow
f:id:four_or_three:20170324174714p:plain:w250

Get Contents of URLから

{"access_token":"アクセストークン","username":"ユーザー名"}

というDictionaryが出力されますので、Get Dictionary Valueで値を取り出してOAuth2.0認証は完了です。


コンシューマーキーとアクセストークンの2つがPocket APIの利用に必要ですので、どこかに控えておきましょう。
この2つは他人に知られてはいけないものですので、ワークフローに書き込んだままシェアしてしまわないよう気をつけて下さい。

スポンサーリンク

2 件のコメント

  • 初めまして。とても参考になっています。

    >後日、今回獲得したアクセストークンを使用してPocket APIにアクセスする自作アクションを紹介する予定です。
    とのことで、こちらも楽しみにしています。

    サイトお引っ越し等でお忙しいかとは思いますが、更新がんばってください。

  • コメントを残す

    メールアドレスが公開されることはありません。