Closed1
NextAuthとZITADELでrefresh_tokenを得る
NextAuthでrefresh_tokenを得る方法を調べると、jwt callbackでaccount.refresh_token
から取得する方法が出てくる
が、Zitadelではデフォルトでとることができなかった
以下解決法
- NextAuthのProvidersにおいて、
offline_access
scopeを追加する
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にクローズされました