前回のn8nのGmailノードでメールが送信できないことのあらまし
n8nで、Schedule Triggerで定時にGmailからメールを送信していたが、急に送信できなくなった。
それまでは、GmailノードのCredentialsの中の
- Client ID
- Client Secret
の2つを設定すれば良かったのだが、バージョンアップにより新たに
- Authorization URL
- Access Token URL
の設定まで要求されるようなった。
そして、community.n8n.ioのGMAIL OAuth Access Token URL?
にかかれている通り
- Authorization URL:
https://accounts.google.com/o/oauth2/auth - Access Token URL:
https://oauth2.googleapis.com/token
に設定すれば問題がなかった。
原因は「有効なリフレッシュトークン」を継続的に受け取れなくなること
が、しばらくするとまたエラー
今度のエラーはrefreshToken is required
とのログが。。。
結論から先に述べると、Client Secret 直下の
Auth URI Query Parameters の設定をaccess_type=offline&prompt=consent
とすれば良いだけ。
更に追加すると、Google OAuthが更新されたので Authorization URLをhttps://accounts.google.com/o/oauth2/v2/auth
とした方がいいです。
解決方法としてCredentialsの作り直しを指示してるサイトがありますが、以上の設定変更だけでおそらく大丈夫です。
なぜなら、このエラーの原因は、一度「許可」を与えたアプリに対して、2回目以降の認証(Reconnect)時には「リフレッシュトークン」を省略して発行するというGoogleの仕様だからです。
しかし、VPS上のn8nで一度「refreshToken is required」という状態(トークンが空の状態)になってしまうと、普通に再連携するだけではGoogleから新しいトークンが送られてきません。
そして、refreshToken is required
となるようです。
つまり、Googleに「もう一度ユーザーに承諾画面を出してくれ」と強制し、新しいリフレッシュトークンを発行することが大事だったようです。
と、Gemini先生との対話で知ったことを自分で考えたかのように貼っときますw