Невозможно передать параметр в методе аутентификации Firebase ⇐ Javascript
-
Гость
Невозможно передать параметр в методе аутентификации Firebase
Когда я использую параметр (@RequestParam String name) в методе findFBtoken, аутентификация не работает. Однако когда я использую метод findFBtoken без параметра findFBtoken(), он работает нормально. Конечно, метод AJAX был обновлен для обоих случаев. Окончательный код получит предварительно сохраненный токен из базы данных по имени пользователя. Для простоты в настоящее время я использую собственный токен без реализации имени пользователя внутри метода сервера. Кстати, метод AJAX правильно передает параметр имени пользователя серверному методу.
UPD: Как выяснилось из кода ниже, иногда аутентификация проходит успешно, а иногда нет — результат нестабильный.
@GetMapping("/get-token") @ResponseBody public String findFBtoken(@RequestParam String name) { пытаться { serviceAccount = новый FileInputStream("./my-aws-6e0f8-firebase-adminsdk-q06q0-78540b7e56.json"); } catch (Исключение е) { System.out.println("нет ключа"); } пытаться { параметры = новый FirebaseOptions.Builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .строить(); } catch (Исключение е) { System.out.println("Ошибка параметров"); } FirebaseApp.initializeApp(варианты); пытаться { customToken = FirebaseAuth.getInstance().createCustomTokenAsync(UID).get(); } catch (Исключение е) { System.out.println("Ошибка получения токена"); } System.out.println("имя: " + имя); System.out.println(customToken); вернуть пользовательский токен; } импортируйте {initializeApp} из «https://www.gstatic.com/firebasejs/10.3 ... ase-app.js»; импортировать { getAnalytics } из «https://www.gstatic.com/firebasejs/10.3 ... alytics.js»; импортировать { getAuth, SignInWithCustomToken} из «https://www.gstatic.com/firebasejs/10.3 ... se-auth.js»; // Отправляем AJAX-запрос на сервер функция findToken(событие) { событие.preventDefault(); var name = document.getElementById("username").value; вар xhttp = новый XMLHttpRequest(); xhttp.onreadystatechange = функция() { if (this.readyState === XMLHttpRequest.DONE) { если (this.status === 200) { вар токен = this.responseText; console.log("Токен:", токен); const firebaseConfig = { apiKey: "AIzaSyCC7XORgSSdu4gq4OGZQ4G0XKAgy7K5STM", authDomain: "my-aws-6e0f8.firebaseapp.com", идентификатор проекта: "my-aws-6e0f8", StorageBucket: "my-aws-6e0f8.appspot.com", messageSenderId: "567282066781", appId: "1:567282066781:web:52a68db33898707420b4b4", идентификатор измерения: «G-8VML47T1BF» }; // Инициализируем Firebase const приложение = инициализироватьApp (firebaseConfig); константная аналитика = getAnalytics (приложение); const auth = getAuth (приложение); SignInWithCustomToken (аутентификация, токен); console.log(токен) .then((userCredential) => { константный пользователь = userCredential.user; }) .catch((ошибка) => { const errorCode = error.code; const errorMessage = error.message; }); } еще { console.error("Ошибка:", this.status); } } document.querySelector('форма').submit(); }; xhttp.open("GET", "/get-token?name=" + name, true); xhttp.отправить(); } window.findToken = findToken;
Когда я использую параметр (@RequestParam String name) в методе findFBtoken, аутентификация не работает. Однако когда я использую метод findFBtoken без параметра findFBtoken(), он работает нормально. Конечно, метод AJAX был обновлен для обоих случаев. Окончательный код получит предварительно сохраненный токен из базы данных по имени пользователя. Для простоты в настоящее время я использую собственный токен без реализации имени пользователя внутри метода сервера. Кстати, метод AJAX правильно передает параметр имени пользователя серверному методу.
UPD: Как выяснилось из кода ниже, иногда аутентификация проходит успешно, а иногда нет — результат нестабильный.
@GetMapping("/get-token") @ResponseBody public String findFBtoken(@RequestParam String name) { пытаться { serviceAccount = новый FileInputStream("./my-aws-6e0f8-firebase-adminsdk-q06q0-78540b7e56.json"); } catch (Исключение е) { System.out.println("нет ключа"); } пытаться { параметры = новый FirebaseOptions.Builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .строить(); } catch (Исключение е) { System.out.println("Ошибка параметров"); } FirebaseApp.initializeApp(варианты); пытаться { customToken = FirebaseAuth.getInstance().createCustomTokenAsync(UID).get(); } catch (Исключение е) { System.out.println("Ошибка получения токена"); } System.out.println("имя: " + имя); System.out.println(customToken); вернуть пользовательский токен; } импортируйте {initializeApp} из «https://www.gstatic.com/firebasejs/10.3 ... ase-app.js»; импортировать { getAnalytics } из «https://www.gstatic.com/firebasejs/10.3 ... alytics.js»; импортировать { getAuth, SignInWithCustomToken} из «https://www.gstatic.com/firebasejs/10.3 ... se-auth.js»; // Отправляем AJAX-запрос на сервер функция findToken(событие) { событие.preventDefault(); var name = document.getElementById("username").value; вар xhttp = новый XMLHttpRequest(); xhttp.onreadystatechange = функция() { if (this.readyState === XMLHttpRequest.DONE) { если (this.status === 200) { вар токен = this.responseText; console.log("Токен:", токен); const firebaseConfig = { apiKey: "AIzaSyCC7XORgSSdu4gq4OGZQ4G0XKAgy7K5STM", authDomain: "my-aws-6e0f8.firebaseapp.com", идентификатор проекта: "my-aws-6e0f8", StorageBucket: "my-aws-6e0f8.appspot.com", messageSenderId: "567282066781", appId: "1:567282066781:web:52a68db33898707420b4b4", идентификатор измерения: «G-8VML47T1BF» }; // Инициализируем Firebase const приложение = инициализироватьApp (firebaseConfig); константная аналитика = getAnalytics (приложение); const auth = getAuth (приложение); SignInWithCustomToken (аутентификация, токен); console.log(токен) .then((userCredential) => { константный пользователь = userCredential.user; }) .catch((ошибка) => { const errorCode = error.code; const errorMessage = error.message; }); } еще { console.error("Ошибка:", this.status); } } document.querySelector('форма').submit(); }; xhttp.open("GET", "/get-token?name=" + name, true); xhttp.отправить(); } window.findToken = findToken;
Мобильная версия