Аутентификация позволяет обеспечить наши приложения или ограничивать доступ для членов не пользователей. Аутентификация также может быть использована, например, для ограничения доступа к платной службе, либо конкретному обслуживанию.
Это только один пример того, как аутентификация может быть в вашем приложении. Сегодня мы добавим аутентификацию в нативное приложение ADCT, используя FireBase.
1 Установка React-Native-Firebase
Первое, что мы делаем, это установить и инициализировать FireBase внутри нашего приложения. В реактивном родном нам нужно использовать контейнер FireBase для реагирования на родных. Мы собираемся использовать React-Nature-Firebase Отказ
Если вы собираетесь начать новое нативное приложение raction action с царапин, и вы хотите использовать FireBase, вам повезет – вы можете установить React-Firebase Firebase, предварительно интегрированную с помощью реакции на родной CLI.
// npx @react-native-community/cli init --template=@react-native-firebase/template authenticationFirebase //** source: https://invertase.io/oss/react-native-firebase/quick-start/new-project
Затем просто установите POD для iOS, запустив следующую команду в корневом каталоге вашего приложения.
cd ios && pod install
Если у вас есть проблемы с установкой нового проекта с FireBase, пожалуйста, обратитесь к Реагистрационные документы Firebase
Добавление React-Nature-Firebase в существующий проект
Установите React-Nature-Firebase
Пакет с использованием пряжи или NPM
yarn add @react-native-firebase/app
или же:
npm install @react-native-firebase/app
Затем установите Pods для iOS.
Shell CD iOS && POD Установить
Запуск приложения
Для iOS есть два способа сделать это: я лично использую XCode, так как это дает мне четкую идею, если что-то пошло не так, и сборка не удалось.
Всегда убедитесь, что пакет работает – нажмите Пряжа начать
Чтобы начать приложение.
Второй способ запуска приложения на iOS запущен командой rac run-iOS-iOS – и это.
Добавление учетных данных FireBase
Этот шаг требует, чтобы мы создали новый проект в Консоль Firebase Отказ
После создания нового проекта на странице приборной панели выберите Добавить Firebase в приложение iOS Отказ Это покажет вам шаги для добавления учетных данных в iOS, как ниже.
Он состоит из нескольких шагов:
Скачать
. Googleservice-info.plist
Файл и поместите его в папку iOS в рамках вашего проекта.Инициализировать FireBase
Для андроида
Android имеет разную настройку для Firebase. В настройках проекта в консоли Firebase Выберите Добавить Firebase на Android Отказ
Вы можете поставить любое имя, которое вам нравится в входе имени приложения – просто убедитесь, что он соответствует требованиям FireBase. Затем нажмите Регистрация Отказ
После этого вам нужно скачать Google-Services.json
Файл и поместите его в папку Android/App.
Затем следующим шагом является инициализация Android SDK.
Последний шаг – применить плагин FireBase внутри: Android/App/build.gradle
Отказ
apply plugin: 'com.google.gms.google-services'
Если у вас есть какие-либо проблемы, выполняющие выше шаги, вы всегда можете ссылаться на Firebase Docs или React-Nature-Firebase Сайты.
Теперь, когда мы выполняемся с интеграцией, следующим шагом является реализация функций FireBase для создания пользователей и входа в React Native.
Добавление входа, логин
Эта фаза проста: просто какой-то код реагирования и JavaScript для вызова функций FireBase. Я собираюсь создать простое интерфейс для входа в систему и регистрацию (это не нужно для этого учебника, чтобы вы могли пропустить этот шаг).
Я поставлю полный исходный код в конце статьи *
Мы будем использовать CreateUserWithemailandPassword
Функция для регистрации для нового пользователя. Я уже реализовал всю проверку в форме – нам просто нужно позвонить эту функцию для создания пользователя.
Когда пользователь нажимает кнопку «Продолжить», __dosignup
будет называться, и код выглядит так:
const __doSignUp = () => { if (!email) { setError("Email required *") setValid(false) return } else if (!password && password.trim() && password.length > 6) { setError("Weak password, minimum 5 chars") setValid(false) return } else if (!__isValidEmail(email)) { setError("Invalid Email") setValid(false) return } __doCreateUser(email, password) } const __doCreateUser = async (email, password) => { try { let response = await auth().createUserWithEmailAndPassword(email, password) if (response) { console.log(tag, "?", response) } } catch (e) { console.error(e.message) } }
Убедитесь, что вы установили @ React - Nature-Firebase/Auth
Чтобы иметь возможность звонить auth (). createuserwithemailandpassword (электронная почта, пароль)
// import auth import auth from "@react-native-firebase/auth"
Функция, которая создает новый пользователь в Firebase, выглядит так:
const __doCreateUser = async (email, password) =>{ try { let response = await auth().createUserWithEmailAndPassword(email, password); if(response){ console.log(tag,"?",response) } } catch (e) { console.error(e.message); }
Если функция бросает ошибку, убедитесь, что метод электронной почты/пароля в разделе аутентификации в консоли Firebase.
Если все прошло хорошо, и введенные данные (электронная почта, пароль) действительны, появится предупреждение. Если вы проверяете раздел аутентификации в консоли FireBase, вы заметите, что создан новый пользователь.
Вот исходный код Подписанкомпонент
Отказ
const SigInComponent = () => { const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [fetching, setFetching] = useState(false) const [error, setError] = useState("") const [isValid, setValid] = useState(true) const __doSignUp = () => { if (!email) { setError("Email required *") setValid(false) return } else if (!password && password.trim() && password.length > 6) { setError("Weak password, minimum 5 chars") setValid(false) return } else if (!__isValidEmail(email)) { setError("Invalid Email") setValid(false) return } __doCreateUser(email, password) } const __doCreateUser = async (email, password) => { try { let response = await auth().createUserWithEmailAndPassword( email, password ) if (response && response.user) { Alert.alert("Success ✅", "Account created successfully") } } catch (e) { console.error(e.message) } } return () } {!!fetching && } Sign Up {error ? ( { setError setEmail(text) }} error={isValid} /> setPassword(text)} /> ) : null} {error} Continue
Для LoginComponent
в основном это то же самое, что нам нужно изменить, мы используем SigninWithemailandPassword
Метод вместо этого.
const __doSingIn = async (email, password) => { try { let response = await auth().signInWithEmailAndPassword(email, password) if (response && response.user) { Alert.alert("Success ✅", "Authenticated successfully") } } catch (e) { console.error(e.message) } }
! [loginsuccess] (loginsuccess.gif
И аутентификация была успешно реализована в нашем приложении ??
Просто одна последняя вещь: если мы должны проверить, будет ли пользователь уже войти в систему, нам нужно отобразить что-то еще вместо экранов входа или входа в систему. Например, мы можем отобразить домашний экран.
Мы можем использовать модуль FireBase для проверки сеанса. Он может быть импортирован из модуля AUTH.
import auth, { firebase } from "@react-native-firebase/auth"
componentDidMount() { // this.register("said1292@gmail.com", "123456"); this.__isTheUserAuthenticated(); } __isTheUserAuthenticated = () => { let user = firebase.auth().currentUser.uid; if (user) { console.log(tag, user); this.setState({ authenticated: true }); } else { this.setState({ authenticated: false }); } };
И мы можем изменить UI на основе, если пользователь аутентифицирован или нет. Мы можем отобразить информацию о пользователе, просто используя тот же метод.
firebase.auth().currentUser.email // said543@gmail.com
И выйти из системы, вы можете просто позвонить await firebase.auth (). Подписание ()
;
Я уверен, что интеграция навигации, как Реагистрационная навигация Было бы потрясающе, но это не было нашим сосредоточенным в этой статье. Так что не стесняйтесь добавлять навигацию, чтобы вы могли просто навигаться на основе пользователя пользователя.
Не стесняйтесь проверить полный исходный код? На Гадость
Спасибо за прочтение .
Первоначально опубликовано на Shadhayani.com.