diff --git a/src/api/na.ts b/src/api/na.ts index 5a128db..103f904 100644 --- a/src/api/na.ts +++ b/src/api/na.ts @@ -26,11 +26,14 @@ export async function getNintendoAccountSessionToken(code: string, verifier: str signal, }).finally(cancel); - const token = await response.json() as NintendoAccountSessionToken | NintendoAccountError; + const token = await response.json() as NintendoAccountSessionToken | NintendoAccountAuthError | NintendoAccountError; if ('errorCode' in token) { throw new ErrorResponse('[na] ' + token.detail, response, token); } + if ('error' in token) { + throw new ErrorResponse('[na] ' + token.error_description ?? token.error, response, token); + } debug('Got Nintendo Account session token', token); @@ -56,11 +59,14 @@ export async function getNintendoAccountToken(token: string, client_id: string) signal, }).finally(cancel); - const nintendoAccountToken = await response.json() as NintendoAccountToken | NintendoAccountError; + const nintendoAccountToken = await response.json() as NintendoAccountToken | NintendoAccountAuthError | NintendoAccountError; if ('errorCode' in nintendoAccountToken) { throw new ErrorResponse('[na] ' + nintendoAccountToken.detail, response, nintendoAccountToken); } + if ('error' in nintendoAccountToken) { + throw new ErrorResponse('[na] ' + nintendoAccountToken.error_description ?? nintendoAccountToken.error, response, nintendoAccountToken); + } debug('Got Nintendo Account token', nintendoAccountToken); @@ -278,6 +284,11 @@ export interface Mii { type: 'profile'; } +export interface NintendoAccountAuthError { + error: string; + error_description: string; +} + export interface NintendoAccountError { errorCode: string; detail: string;