Closed1
NextAuthとZITADELでrefresh_tokenを得る
NextAuthでrefresh_tokenを得る方法を調べると、jwt callbackでaccount.refresh_tokenから取得する方法が出てくる
が、Zitadelではデフォルトでとることができなかった
以下解決法
- NextAuthのProvidersにおいて、
offline_accessscopeを追加する
ZitadelProvider({
clientId: process.env.ZITADEL_CLIENT_ID,
clientSecret: process.env.ZITADEL_CLIENT_SECRET,
issuer: process.env.ZITADEL_URL,
+ authorization: { params: { scope: "openid email profile offline_access" } },
}),
- jwt callbackでaccountから
refresh_tokenを取り出し、tokenに入れる
callbacks: {
jwt: async ({
# <略>
if (account) {
token.exiresAt = account.expires_at;
+ token.refreshToken = account.refresh_token;
token.idToken = account.id_token;
}
- ZITADELのプロジェクト/アプリケーションで「トークンを更新する」にチェックを入れる

Done
いやデフォルトでチェック入れといてくださいよ...一時間悩みました
このスクラップは2023/11/11にクローズされました