Google API のinvalid_grantエラーの対処方法

PythonとGoogle Gmail APIを使って自動処理をはじめたのですが、作成後にinvalid_grant エラーというものが発生し、対処を行ったため、その記録を残しておきます。

invalid_grant エラーの発生条件

まず、invalid_grantエラーのメッセージは、
invalid_grant: Token has been expired or revoked と表示される。

発生原因としては、以下のケースが考えられる。

  • アプリのアクセス権が取り消された
  • refresh tokenが6カ月間使用されていない
  • パスワードの変更とtokenにgmailのスコープが含まれる場合
  • OAth Consent ScreenのユーザータイプがExternal(外部)、ステータスがテストの状態となっており、refresh tokenが発効から7日経過した場合

私の場合には、一番下のOAth Consent ScreenのユーザータイプがExternal、ステータスがテスト状態であるため、refresh tokenが発行されてから7日経過し、有効期限が切れていたことが原因であった。

・参考画像


エラーの対処方法

上記エラーが発生した場合には、Clien IDを新しく発行しなおし、それを利用するようにすれば解決する。

Client IDの発行は、Credentialsページ→CREATE CREDENTIALS→OAth Client IDで簡単に発行することができる。

上記でClient IDを発行しなおすだけでなく、PCの所定のディレクトリに既に作成されているtokenファイルを削除する必要がある。

おそらくは、token.jsonとファイル検索をかければ出てくるはずなので、それを消しておけばよい。

この作業をしたうえで、再度PythonでGoogle APIを利用すれば、同じコードで機能するようになるはずです。