Проект в реакции Native + Expo с проблемой, когда я выполняю тот же запрос аутентификации psn-api во второй разAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проект в реакции Native + Expo с проблемой, когда я выполняю тот же запрос аутентификации psn-api во второй раз

Сообщение Anonymous »

У меня возникли проблемы при попытке выполнить запрос, который получает значение кода, используемое для получения токена для подключения к PlayStation API. Я все перепробовал и не могу понять, что это может быть. Когда я проверял правильное значение токена единого входа, он достигает функции, но когда он пытается связаться с серверами Sony, чтобы получить значение, он работает только с первой попытки в приложении на моем мобильном телефоне. Начиная со второй попытки, запрос перестает работать и возвращает код состояния 200, ожидаемый код был 302. Я могу заставить запрос снова вернуть 302, только очистив кеш приложения в настройках моего мобильного телефона. Поэтому я предполагаю, что React Native или Expo каким-то образом могут хранить какое-то значение или раздел, который мешает запросам.
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;
}
Я также тестировал тот же код, который выполнялся на моем компьютере отдельно в TypeScript и JavaScript, и оба метода работали с использованием Axio и Fetch. Однако проблема возникает только в моем приложении React Native. Я ничего не нашел по этому поводу в Интернете и не могу найти другого решения.
Я пытался отладить код, я уже знаю, что значение SSO правильное и допустимое, если SSO недействителен, то, очевидно, он вернет ошибку и код состояния 200, но что-то происходит только со второго запроса и далее, что даже при получении правильного значения запрос всегда возвращает 200, а не 302
Я также пытался оставьте фиксированное значение для валидного токена и результат тот же, с первой попытки работает, со второй начинается ошибка

Подробнее здесь: https://stackoverflow.com/questions/791 ... api-auth-r
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»