くりにっき

フルスタックキュアエンジニアです

ChatWorkMentionTaskでoffline_accessに対応した

前置き

以前ChatWorkMentionTaskというアプリを作った時に

sue445.hatenablog.com

ChatWorkのAPIのリフレッシュトークンの有効期限は2週間なので、リフレッシュトークンが切れる3日前にリマインド用にタスクを作るようにした

って書いたのですが、ChatWork本家でリフレッシュトークンの有効期限が無期限に設定できるようになったということなので小躍りして対応しました。ヒャッホウ!

参考

creators-note.chatwork.com

対応方法

OAuthクライアントの設定に「永続的なAPIアクセスの許可」が増えているのでこいつをチェックして保存

f:id:sue445:20180808003628p:plain

omniauth-chatwork であれば scopeoffline_access を足すだけ。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :chatwork, ENV["CHATWORK_CLIENT_ID"], ENV["CHATWORK_CLIENT_SECRET"],
           scope: ["users.profile.me:read", "rooms.tasks:write", "rooms.info:read", "offline_access"]
end

https://github.com/sue445/chatwork_mention_task/blob/1be48105ca9c0c43f9a1a1dc98146c4609608e89/config/initializers/omniauth.rb#L1-L4

ChatWorkMentionTaskの本番に適用する前に試したけど、offline_access を有効にした後も既存のアクセストークンやリフレッシュトークンは問題なく使えたのでサクッと変更していいんじゃないかと思います。

ChatWorkMentionTaskの仕様変更について

リフレッシュトークンの有効期限がなくなったので、リフレッシュトークンが切れる3日前のリマインド用にタスク作成はなくします。

(現状リフレッシュトークンが14日間のままのユーザがまだ何人かいるので機能の削除自体はもうちょい先になりますが)