Автофон Firebase Auth: CODE_SENT разрешается перед AUTO_VERIFIFE, как убедиться, что только проверенные разрешения, когдAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Автофон Firebase Auth: CODE_SENT разрешается перед AUTO_VERIFIFE, как убедиться, что только проверенные разрешения, когд

Сообщение 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',
});
}
});
};



Подробнее здесь: https://stackoverflow.com/questions/796 ... nsure-only
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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