Hi, I am facing same issue, can you please take a look?
I am using zeroDEV to implement JWT using JWKS and this is my JWKS endpoint
{
“keys”:[
{
“alg”: “RS256”,
“use”: “sig”,
“kty”: “RSA”,
“n”: “qK53lcX2kRmxhEgp0N6DfrEXDOMJMKyn-KoWpHjvHrGC0unBgo183rcO-xS-zVY3LzXryA_Zehic_dfGk7kh2eJ3C_eD1g2gFjoG0_p9mm45dpjbF48z3ipNpOQsjyJhYYCHTJ2LYpmmmLXqIOizNdSTs7g6a0WitMn427_9S351-CTxhm6E_Mw-KJXReXgxUnJz82kc_HRkwm1OIYsBc7Yu33D3fxcGOwbkLoEAmLgczlwlA7egnxZr_YxIj1ShmXMR2-ciubuvY6uS0uMijFIcGZT9v7newpJE1DKmjmj1mWdXT8WRNCr2xaQvEeUstdCFvHKEchH9ACxNerd9WQ”,
“e”: “AQAB”,
“kid”: “BjOB1/WMAIH2D24hbeBPnhf5AayQbayLNw7kWdNhFX0=”
}
]
}
When I had only 1 jwks-key-object instead of an array of jwks-keys inside an object, the wen3Auth would just keep loading
my Code
‘use client’
import { ZeroDevWeb3Auth } from ‘@zerodev/web3auth’
import * as sdk from ‘@zerodev/sdk’
import { ECDSAProvider } from ‘@zerodev/sdk’
import { useEffect, useMemo, useState } from ‘react’
//const { ZeroDevWeb3Auth } = require(‘@zerodev/web3auth’)
const JWT_ZeroDev=({my_jwt}:{my_jwt:string})=> {
const [jwt, setJWT] = useState<null|string>(null)
const [address, setAddress] = useState(‘’)
const [loading, setLoading] = useState(false)
const defaultProjectId=‘73748e98-6b11-44bf-a759-e4bc97d46197’;
useEffect(() => {
// THIS IS DEMO CODE TO CREATE A JWT, YOU WOULD HAVE YOUR OWN WAY TO GET YOUR JWT
setJWT(null)
fetch('/api/verify_jwt',{cache:'no-cache'}).then((data)=>{data.json().then((d)=>{console.log(d);setJWT(d.jwt);console.log(jwt)})})
}, [])
const setWallet = async (provider:any) => {
const ecdsaProvider = await ECDSAProvider.init({
projectId: defaultProjectId,
owner: sdk.getRPCProviderOwner(provider),
});
setAddress(await ecdsaProvider.getAddress())
}
const zeroDevWeb3Auth = useMemo(() => {
const instance = new ZeroDevWeb3Auth([defaultProjectId])
instance.init({onConnect: async () => {
setLoading(true)
setWallet(zeroDevWeb3Auth.provider)
setLoading(false)
}})
return instance
}, [])
const disconnect = async () => {
await zeroDevWeb3Auth.logout()
setAddress(‘’)
}
const handleClick = async () => {
alert(‘clicked’)
setLoading(true)
zeroDevWeb3Auth.connect(‘jwt’, {jwt}).then((provider:any) => {
setWallet(provider)
}).finally(() => {
setLoading(false)
})
}
const connected = !!address
return (
{connected &&
Wallet: {address}
}
{!connected && <button onClick={handleClick} disabled={loading || !jwt}>{ loading ? ‘loading…’ : ‘Create Wallet with JWT’}}
{connected &&
Disconnect
}
{jwt&&
{jwt}
}
)
}
export default JWT_ZeroDev;