K
Kinde3mo ago
wispyco

Machine Api Access Token granted once but not again

I am using NextJS, and I make a request like this below
const token = await fetch(`https://app.kinde.com/oauth2/token`, {
method: "POST",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams({
audience: `https://wayakumqms.kinde.com/api`,
grant_type: "client_credentials",
client_id: "redacted",
client_secret: KINDE_CLIENT_SECRET!,
}),
})

const tokenData = await token.json();

console.log("tokenData", tokenData.access_token);
const token = await fetch(`https://app.kinde.com/oauth2/token`, {
method: "POST",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams({
audience: `https://wayakumqms.kinde.com/api`,
grant_type: "client_credentials",
client_id: "redacted",
client_secret: KINDE_CLIENT_SECRET!,
}),
})

const tokenData = await token.json();

console.log("tokenData", tokenData.access_token);
And I get the correct access_token I then eventually make a request to google and get a url for google drive auth I redirect to it and come back to my app with a session ID I then in a different route run the same request as above to get a access_token again so that I can get a token from google drive with the session ID however I get the following error
tokenData undefined
tokenData undefined
Error getting token: {
errors: [
{
code: 'INVALID_CREDENTIALS',
message: 'Invalid credentials used to access API'
}
]
}
POST /api/connected-apps-token 403 in 1333ms
Error getting token: {
errors: [
{
code: 'INVALID_CREDENTIALS',
message: 'Invalid credentials used to access API'
}
]
}
tokenData undefined
tokenData undefined
Error getting token: {
errors: [
{
code: 'INVALID_CREDENTIALS',
message: 'Invalid credentials used to access API'
}
]
}
POST /api/connected-apps-token 403 in 1333ms
Error getting token: {
errors: [
{
code: 'INVALID_CREDENTIALS',
message: 'Invalid credentials used to access API'
}
]
}
Not sure why it didnt worked the second time and did the first. I was under the assumption that this machine api access token shouldnt be stored but called when needed.
3 Replies
wispyco
wispycoOP3mo ago
I get this for the response
token Response {
status: 401,
statusText: 'Unauthorized',
headers: Headers {
date: 'Mon, 09 Sep 2024 14:32:29 GMT',
'content-type': 'text/plain; charset=utf-8',
'content-length': '174',
connection: 'keep-alive',
vary: 'Origin'
},
body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
bodyUsed: false,
ok: false,
redirected: false,
type: 'basic',
url: 'https://redacted.kinde.com/oauth2/token'
}
token Response {
status: 401,
statusText: 'Unauthorized',
headers: Headers {
date: 'Mon, 09 Sep 2024 14:32:29 GMT',
'content-type': 'text/plain; charset=utf-8',
'content-length': '174',
connection: 'keep-alive',
vary: 'Origin'
},
body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
bodyUsed: false,
ok: false,
redirected: false,
type: 'basic',
url: 'https://redacted.kinde.com/oauth2/token'
}
I figured this out this can be closed
IkiTg07
IkiTg073mo ago
Hey, do you mind sharing how you resolved your issue please ?
wispyco
wispycoOP3mo ago
Oh Yes, I had to implement storage of the access token in my db with a expiry date and check for the expiry date and if it is expired run the request again if it is not expired use the same accesss token. Hope that helps. @IkiTg07
Want results from more Discord servers?
Add your server