Я создаю собственное приложение для реагирования и использую Firebase, а точнее firestore, для управления своими данными. Моя текущая цель - реализовать функцию автоматического входа в мое приложение, где, если пользователь выходит из приложения, я хочу, чтобы он оставался в системе, если только они вручную не нажмут кнопку Sign Out
перед выходом из приложения. Вот мой текущий процесс:
Когда пользователь входит в приложение, я вхожу в систему с помощью: firebase.auth().signInWithEmailAndPassword(email, password)
. Затем я получаю их idToken по:
let authIdToken = "";
firebase
.auth()
.currentUser.getIdToken(true)
.then(function (idToken) {
authIdToken = idToken
})
.catch(function (error) {
console.log(error)
});
Затем я хочу сохранить этот токен в телефоне, поэтому, когда пользователь снова откроет приложение, я могу получить этот токен и проверить его действительность. Если он действителен, я могу зарегистрировать пользователя, используя его idToken. В собственном ответе я могу сделать это, выполнив:
AsyncStorage.setItem(
"userData",
JSON.stringify({
token: token,
})
);
Теперь, когда приложение загружается:
const startScreen = props => {
useEffect(() => {
const tryLogin = async () => {
const userData = await AsyncStorage.getItem("userData");
const transformedData = JSON.parse(userData);
const { token } = transformedData;
await firebase
.auth()
.verifyIdToken(token, true)
.then((payload) => {
console.log(true)
})
.catch((error) => {
if (error.code == "auth/id-token-revoked") {
// Token has been revoked. Inform the user to reauthenticate or signOut() the user.
console.log("revoked")
} else {
console.log("error")
}
});
};
tryLogin();
}, []);
Проблема: Когда я пытаюсь проверить Таким образом, я столкнулся со следующей ошибкой: firebase.auth().verifyIdToken is not a function.
Я прочитал документацию и не знаю, как еще проверить этот токен с помощью JS. Как мне это проверить? Сообщите мне, если мой процесс проверки неверен и как это нужно сделать. Я новичок в использовании firestore и аутентификации в целом и надеюсь узнать, как это сделать правильно.
Еще одно полезное замечание: вот как я настраиваю свой firestore: !firebase.apps.length ? firebase.initializeApp(firebaseConfig) : {};
Спасибо!