Я просто хочу начать с того, что у меня практически нет опыта работы с React или React Native, поэтому, вероятно, есть вещи, которые я делаю, которые можно улучшить, но я хотел научиться и должен с чего-то начать.
Я решил начать с создания рабочего процесса OAuth в React Native. Я собираюсь пройти через это с точки зрения пользователя Mac OSX и для iOS.
Начиная
Если лучше начать работу, чем следовать руководству по началу работы, я сначала следил за потоком Expo, так как это был тот, который отображается по умолчанию. Но вскоре я узнал, что с OAuth вам нужно установить некоторые собственные зависимости для потока Auth.
Чтобы создать приложение, сначала достаточно просто установить cli npm install -g react-native-cli
, а затем создать свой проект react-native init MyAwesomeAuthApp
.
Добавление аутентификации
Установка
Для Auth я собираюсь использовать пакет React Native App Auth, который позволяет поставщикам OAuth 2.0 и OpenID Connect.
Установите и скомпонуйте собственный пакет, выполнив следующие действия:
npm i react-native-app-auth react-native link react-native-app-auth
Часть link
- это то, что добавляет собственные зависимости к сборкам ios
и andriod
. Я решил использовать шаг Carthage для добавления зависимостей, поскольку у меня были некоторые проблемы с модулями Cocoa, которые не работали правильно, чтобы установить зависимость. Для начала перейдите в папку iOS
и создайте Cartfile
со следующим содержимым:
github "openid/AppAuth-iOS" "master"
Вам нужно будет установить carthage
, что вы можете сделать с brew install carthage
. После того, как вы установили и создали Cartfile
, вы можете запустить carthage update — platform iOS
для установки пакетов.
Как только это будет завершено, вам нужно будет скопировать AppAuth.framework
, который находится в ios/Carthage/Build/iOS
, и добавить его в Frameworks
в Xcode. Наконец, настройте фазу Copy Files
в Build Phases
, выберите Frameworks
в качестве пункта назначения и добавьте AppAuth.framework
и обязательно отметьте опцию Code Sign on Copy
.
Настройка Xcode
Теперь нам нужно открыть проект ios
в Xcode
, чтобы завершить настройку. Если вы запустите open MyAuthApp.xcodeproj
, из папки ios
должно открыться Xcode
.
Как только проект будет открыт, разверните папку с названием проекта, в моем случае MyAuthApp
вы должны увидеть файл с именем AppDelegate.h
, вы можете заменить его содержимое следующим образом:
Это устанавливает AuthorisationFlowManager
, и вам нужно будет обновить AppDelegate.m
, чтобы позволить методу openUrl подавать авторизацию в приложение. Перед вызовом @end
файла AppDelegate.m
добавьте следующее:
На этом настройка и установка Auth завершены, теперь вы можете запустить react-native run-ios
и увидеть работающее приложение в симуляторе. Это может занять некоторое время и подтвердит, что установка завершена, если все пойдет хорошо. Мы еще не добавили аутентификацию в фактическое приложение React, так что это просто для того, чтобы уточнить, что все работает.
Добавление аутентификации
Поток OAuth
Мы установили пакет и настроили все, теперь нам нужно добавить Auth в приложение React. Мы собираемся пока упростить это и просто добавим кнопку, которая будет запускать аутентификацию.
В приведенном выше фрагменте я обновил сгенерированный App.js
файл, который react-native
создается по умолчанию. Я удалил часть исходного текста и добавил кнопку входа. Я импортировал пакет аутентификации и создал _authorize
метод, который откроет страницу входа в систему выбранных поставщиков аутентификации.
В приведенном выше примере я выбрал Google. Вам нужно будет настроить учетные данные OAuth и добавить их к clientId
и redirectUrl
. После этого вы сможете перезагрузить приложение и нажать кнопку login
, чтобы перейти на экран входа в Google! Ага!!
Спасибо за прочтение. Я не эксперт по React, поэтому, если у вас есть что-то, что я сделал не так или что можно улучшить, я буду признателен за любые комментарии или сообщения!