会社行きたくなかったんです。

自由になりたくて会社辞めました

IT Yahoo! ビジネス プログラミング

Yahoo!APIのリフレッシュトークンによるアクセストークン更新の流れを考えてみた。

更新日:

Yahoo!APIのリフレッシュトークンによるアクセストークン更新の流れについて考えてみました。

素人プログラマなので、意味不明な言葉ばかりで苦労しています。

なんとか理解した部分を忘備録的にメモしています。

関連記事:VB.net でYahoo APIのアクセストークンを取得してみました。

スポンサーリンク

バッチ処理におけるYahoo APIのアクセストークン リフレッシュトークンの処理のフロー」で、Yahoo! APIのアクセストークンの仕組みを調べた結果を元に考えた実際の処理の流れは、次のようになります。

Yahoo!APIによるバッチ処理の流れ

認可コードを取得

認可コードを使ってアクセストークン、リフレッシュトークンを取得

アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する

リフレッシュトークンの期限がきれたら認可コードを取得

認可コードを使ってアクセストークン、リフレッシュトークンを取得

アクセストークンを使って処理を行う(バッチ処理のメイン部分)

アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する

アクセストークンを使って処理を行う(バッチ処理のメイン部分)

リフレッシュトークンの期限がきれたら認可コードを取得

認可コードを使ってアクセストークン、リフレッシュトークンを取得

アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する

リフレッシュトークンの期限がきれたら認可コードを取得

………(以降同じ処理の繰り返し)

アクセストークン、リフレッシュトークンの期限を確認する方法は多分ありません。
なので、
リフレッシュトークン取得日時とアクセストークン更新日時
を保存しておく必要があります。

認可コードを使ってアクセストークンを取得した日時が最初のアクセストークン更新日時となります。

以上を踏まえて、実際のツールの処理の流れを考えてみます。
開発言語はVB.netです。

スクレイピングでヤフーへログインしないようにとのことなので、認可コードを取得する部分は手動にします。

必要な項目はデータベースにテーブルを作っておいて保存することにします。
例えば、次のようなテーブルにするとします。

テーブル名:認可コード保存テーブル
列:認可コード、アクセストークン、リフレッシュトークン、アクセストークン更新日時、リフレッシュトークン取得日時

認可コードを取得する部分

Authorizationエンドポイントにアクセス(手動でURLをクリック)

ヤフーにログイン(手動でログイン)

コールバックURLで認可コードををDBに保存(ASP.netで作る)
この時、前回のデータがあれば削除する。(話を単純にするため、実際に作る時はログ的な意味で一定期間残す予定です。)

アクセストークンを取得しながらバッチ処理を行う部分

認可コード保存テーブルのアクセストークンが空欄だったら認可コードを使ってアクセストークン、リフレッシュトークンを取得
この時、アクセストークン更新日時、リフレッシュトークン取得日時を保存

アクセストークンを使って処理を行う(バッチ処理のメイン部分)

アクセストークン更新日時から1時間経過していたら、
リフレッシュトークンでアクセストークンを更新する。
この時、アクセストークン更新日時を更新

アクセストークンを更新し続けながら、処理を継続

リフレッシュトークンの期限が近づいたら、AuthorizationエンドポイントにアクセスするためのURLをメールで送信

最初の処理に戻る。

以上のようにすれば、月に1回届くメール内のリンクをクリックして、ヤフーのパスワードを入力するだけで、アクセストークンを更新し続けることができるはずです。

実際には、もう少し複雑な処理を作り込む必要があります。
アクセストークンの期限を正確に確認することができません。
そのため、処理中にアクセストークンの期限が切れてしまった場合は、リフレッシュトークン を使って再取得しする。
さらに、リフレッシュトークンも期限切れのエラーがでてしまったら、処理を中断して、認可コードを取得するためのメールを送信する。
といった例外処理を作っておく必要があります。

-IT, Yahoo!, ビジネス, プログラミング

Copyright© 自由になりたくて会社辞めました , 2018 AllRights Reserved Powered by AFFINGER4.