ユーザーアクセストークンが revoke される

弊社提供のアプリでは、ユーザーの認可を元にユーザーアクセストークンのリフレッシュトークンを自データベース内に保存し、ユーザーアクセストークンを定期的に更新しています。


2022年08月22日の正午より、あるユーザーでこの定期更新が失敗するようになりました。

このユーザーは、アプリへの権限を何ら操作しておりませんので、本来定期更新は成功するはずです。


以下に、定期更新が失敗した時のプラットフォームAPI(共通)のレスポンスを添付します。


{ title: "Invalid Grant", error: "invalid_grant", error_description: "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.", hint: "" }


なお、本件と関係しないとは思われますが、当該ユーザーではこのエラーが発生する前に、home.smaregi.dev/users より、スタッフアカウントを1件削除しています。

ベストアンサー

  • DMにて詳細を伺い解決済みです。


    原因としてはユーザー(スタッフ)の削除が行われていたことでした。

    以下スタッフの削除とユーザーアクセストークンについて。


    まず前提として、

    1. 契約IDとしてPFアプリに認可を与えるのはマイページで購入したとき。

    となります。

    契約IDとしての購入をユーザーが代理しているのは上記のタイミングになるので、購入できるユーザー(スタッフ)かの権限チェックはマイページ上でやっております。

    また、この時、

    2. 購入によりPFアプリに契約IDのリソースへのアクセスを認可ということでアプリアクセストークンを取得できるようになる

    という認識です。

    続いてユーザーアクセストークンについて、

    3. ユーザーアクセストークンは (契約IDとしてPFアプリに認可されている前提の中で) ユーザー(スタッフ)の権限内でPFAPIにアクセスするためのもの

    という立ち位置で設計しております。なので、ユーザーアクセストークンに対応しているエンドポイントはユーザー権限によってAPIのレスポンスが変わることがございます。仕様書


    1 ~ 3 より、スタッフを消されたら権限が参照できないのでアクセスできない。という流れです。

答え

  • アプリアクセストークンに期待する権限の範囲と、ユーザーアクセストークンに期待する権限の範囲を混同していたようでした。

    ご指摘頂いた通り、「ユーザー」アクセストークンはインストール操作者の権限を代替するものとして違和感はないものと思います。

    ただそうすると、無期限での権限の移譲とはならないので、使い所が難しいかも知れませんね。

    (アプリが稼働していても、ユーザーアクセストークンが有効であるとは仮定できないので)


    ご回答ありがとうございます!

  • @kogai

    無期限での権限の移譲とはならないので、使い所が難しいかも知れません

    いつもただの質問だけでなく、ご指摘やご提案までいただきありがとうございます!

    このご意見・ご提案がアプリケーションに反映されるかはわかりませんが、誠意をもって受け止めさせていただきます。

    今後ともよろしくお願いいたします。