Я использую аутентификацию телефона Firebase в приложении React Native. Проблема, с которой я сталкиваюсь, заключается в том, что, когда происходит автоматическая проверка, корпус Code_Sent все еще выполняется в первую очередь, а Auto_Verififififified запускается через несколько секунд (6–10 с).
К тому времени приложение уже переносилось на экран OTP, так что поток автоматической проверки пропускается полностью.
prege? /> Вот что я хочу: < /p>
Если AUTO_VERIFIFIED происходит, я хочу: < /p>
полностью пропустить экран OTP. Все. < /p>
import auth from '@react-native-firebase/auth';
import { db } from './firebaseConfig';
import { addDoc, collection, serverTimestamp } from 'firebase/firestore';
export const phoneAuth = (formattedPhoneNumber) => {
return new Promise((resolve, reject) => {
try {
auth()
.verifyPhoneNumber(formattedPhoneNumber)
.on(
'state_changed',
async (phoneAuthSnapshot) => {
switch (phoneAuthSnapshot.state) {
case auth.PhoneAuthState.CODE_SENT: //runs always, autoverification or not
resolve({
status: 'sent',
verificationId: phoneAuthSnapshot.verificationId,
phoneAuthSnapshot,
});
break;
case auth.PhoneAuthState.AUTO_VERIFIED: //runs after few seconds
try {
const { verificationId, code } = phoneAuthSnapshot;
const credential = auth.PhoneAuthProvider.credential(
verificationId,
code
);
const userCredential = await auth().signInWithCredential(credential);
resolve({
status: 'autoVerified',
userCredential,
phoneAuthSnapshot,
});
}
catch (err) {
reject({
status: 'autoVerifyFailed',
error: err.message,
});
}
break;
case auth.PhoneAuthState.AUTO_VERIFY_TIMEOUT:
resolve({ status: 'timeout' });
break;
case auth.PhoneAuthState.ERROR:
reject({
status: 'error',
error:
phoneAuthSnapshot.error?.message ||
'There is some issue with OTP verification.',
});
break;
default:
resolve({ status: phoneAuthSnapshot.state });
}
},
(error) => {
reject({
status: 'failed',
error: error?.message || 'OTP verification failed',
});
}
);
} catch (error) {
reject({
status: 'exception',
error: error?.message || 'Failed to send OTP',
});
}
});
};
Подробнее здесь: https://stackoverflow.com/questions/796 ... nsure-only
Автофон Firebase Auth: CODE_SENT разрешается перед AUTO_VERIFIFE, как убедиться, что только проверенные разрешения, когд ⇐ Android
Форум для тех, кто программирует под Android
1751609073
Anonymous
Я использую аутентификацию телефона Firebase в приложении React Native. Проблема, с которой я сталкиваюсь, заключается в том, что, когда происходит автоматическая проверка, корпус Code_Sent все еще выполняется в первую очередь, а Auto_Verififififified запускается через несколько секунд (6–10 с).
К тому времени приложение уже переносилось на экран OTP, так что поток автоматической проверки пропускается полностью.
prege? /> Вот что я хочу: < /p>
Если AUTO_VERIFIFIED происходит, я хочу: < /p>
полностью пропустить экран OTP. Все. < /p>
import auth from '@react-native-firebase/auth';
import { db } from './firebaseConfig';
import { addDoc, collection, serverTimestamp } from 'firebase/firestore';
export const phoneAuth = (formattedPhoneNumber) => {
return new Promise((resolve, reject) => {
try {
auth()
.verifyPhoneNumber(formattedPhoneNumber)
.on(
'state_changed',
async (phoneAuthSnapshot) => {
switch (phoneAuthSnapshot.state) {
case auth.PhoneAuthState.CODE_SENT: //runs always, autoverification or not
resolve({
status: 'sent',
verificationId: phoneAuthSnapshot.verificationId,
phoneAuthSnapshot,
});
break;
case auth.PhoneAuthState.AUTO_VERIFIED: //runs after few seconds
try {
const { verificationId, code } = phoneAuthSnapshot;
const credential = auth.PhoneAuthProvider.credential(
verificationId,
code
);
const userCredential = await auth().signInWithCredential(credential);
resolve({
status: 'autoVerified',
userCredential,
phoneAuthSnapshot,
});
}
catch (err) {
reject({
status: 'autoVerifyFailed',
error: err.message,
});
}
break;
case auth.PhoneAuthState.AUTO_VERIFY_TIMEOUT:
resolve({ status: 'timeout' });
break;
case auth.PhoneAuthState.ERROR:
reject({
status: 'error',
error:
phoneAuthSnapshot.error?.message ||
'There is some issue with OTP verification.',
});
break;
default:
resolve({ status: phoneAuthSnapshot.state });
}
},
(error) => {
reject({
status: 'failed',
error: error?.message || 'OTP verification failed',
});
}
);
} catch (error) {
reject({
status: 'exception',
error: error?.message || 'Failed to send OTP',
});
}
});
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79689731/firebase-phone-auth-code-sent-resolves-before-auto-verified-how-to-ensure-only[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия