async ExchangeNpssoForCode(npssoToken: string): Promise {
console. log("Токен NPSSO atual:", npssoToken);
Код: Выделить всё
const queryString = new URLSearchParams({
access_type: "offline",
client_id: "09515159-7237-4370-9b40-3806e67c0891",
redirect_uri: "com.scee.psxandroid.scecompcall://redirect",
response_type: "code",
scope: "psn:mobile.v2.core psn:clientapp"
}).toString();
const requestUrl = `https://ca.account.sony.com/api/authz/v3/oauth/authorize?${queryString}`;
const response = await fetch(requestUrl, {
headers: {
'Cookie': `npsso=${npssoToken}`
},
redirect: "manual"
});
const responseHeaders = response.headers;
if (!responseHeaders.has("location") || !responseHeaders.get("location")?.includes("?code=")) {
throw new Error(`
There was a problem retrieving your PSN access code. Is your NPSSO code valid?
To get a new NPSSO code, visit https://ca.account.sony.com/api/v1/ssocookie.
`);
}
// Captura o código de autorização da URL de redirecionamento
const redirectLocation = responseHeaders.get("location") as string;
const redirectParams = new URLSearchParams(redirectLocation.split("redirect/")[1]);
return redirectParams.get("code") as string;
}
Я пытался отладить код, я уже знаю, что значение SSO правильное и допустимое, если SSO недействителен, то, очевидно, он вернет ошибку и код состояния 200, но что-то происходит только со второго запроса и далее, что даже при получении правильного значения запрос всегда возвращает 200, а не 302
Я также пытался оставьте фиксированное значение для валидного токена и результат тот же, с первой попытки работает, со второй начинается ошибка
Подробнее здесь: https://stackoverflow.com/questions/791 ... api-auth-r
Мобильная версия