Kā iestatīt React Native autentifikāciju ar reag-native-app-auth

Versijas

Pirms sākam, pārliecinieties, vai esat instalējis šādas versijas:

“Reaģēt”: “16.8.3”,

“Reaģēt-dzimtā”: “0.59.1”,

“Reaģēt-vietējie-kontakti”: “3.1.5”,

Lūk, saite uz Github repo, ja vēlaties to pārbaudīt : //github.com/FormidableLabs/react-native-app-auth

React-native-app-auth tiek izmantots, lai nodrošinātu autentifikāciju jūsu reaģējošās vietējās lietojumprogrammās. Manā gadījumā es mēģināju to izmantot ar Google, tāpēc šeit ir paskaidrojums, kā to var instalēt un izmantot iepriekš minētajām versijām.

Viņu dokumentācijā tas ir izskaidrots arī kā React Native bridge AppAuth-iOS un AppAuth-Android SDKS saziņai ar OAuth 2.0 un OpenID Connect nodrošinātājiem.

Pārbaudītie OpenID nodrošinātāji:

Šie pakalpojumu sniedzēji ir saderīgi ar OpenID, kas nozīmē, ka varat izmantot automātisko meklēšanu:

  • Identity Server4 (konfigurācijas piemērs)
  • Identity Server3 (konfigurācijas piemērs)
  • Google (konfigurācijas piemērs)
  • Okta (konfigurācijas piemērs)
  • Atslēga (konfigurācijas piemērs)
  • Azure Active Directory (konfigurācijas piemērs)
  • AWS Cognito (konfigurācijas piemērs)

Pārbaudītie OAuth2 nodrošinātāji:

Šie pakalpojumu sniedzēji ievieš OAuth2 specifikāciju, taču nav OpenID nodrošinātāji, kas nozīmē, ka jums pašiem jākonfigurē autorizācijas un marķiera galapunkti.

  • Uber (konfigurācijas piemērs)
  • Fitbit (konfigurācijas piemērs)
  • Dropbox (konfigurācijas piemērs)
  • Reddit (konfigurācijas piemērs)

Uzstādīšana

npm install react-native-app-auth --savereact-native link react-native-app-auth

IOS

Dokumentācijā ir trīs veidi, kā ieviest šo stāvokli, bet es dodu priekšroku CocoaPods.

Ja izmantojat CocoaPods pirmo reizi, lūdzu, veiciet tālāk norādītās darbības.

sudo gem install cocoapods

No saknes mapes atveriet

cd ios
pod init

Pod init komanda inicializēs Podfile jūsu iOS direktorijā.

Pēc tam pievienojiet šo rindu zemāk savā Podfile pēc mērķa 'your_app' do

pod 'AppAuth', '0.95.0'

Reģistrējiet novirzīšanas URL shēmu

Ja plānojat atbalstīt operētājsistēmu iOS 10 un vecākas versijas, atbalstītās novirzīšanas URL shēmas jādefinē Info.plistšādi:

Piezīme: jūs saņemsiet šīs vērtības no oauth nodrošinātāja .

Google: //console.developers.google.com/

CFBundleURLTypes  CFBundleURLName com.your.app.identifier CFBundleURLSchemes  io.identityserver.demo  
  • CFBundleURLNameir jebkura globāli unikāla virkne. Parasti tiek izmantota lietotnes identifikatora izmantošana.
  • CFBundleURLSchemesir URL shēmu masīvs, kas jārisina jūsu lietotnei. Shēma ir jūsu OAuth novirzīšanas URL sākums, līdz shēmas atdalītāja ( :) rakstzīmei.

Definējiet openURL atzvanīšanu lietotnē AppDelegate

Lai turpinātu autorizācijas plūsmu no novirzīšanas, jums jāsaglabā autorizācijas sesija. Veiciet šīs darbības:

Veiciet AppDelegateatbilstību RNAppAuthAuthorizationFlowManageršādām izmaiņām AppDelegate.h:

+ #import "RNAppAuthAuthorizationFlowManager.h"
- @interface AppDelegate : UIResponder + @interface AppDelegate : UIResponder 
+ @property(nonatomic, weak)idauthorizationFlowManagerDelegate;

Mainiet šādu metodi no UIApplicationDelegatein AppDelegate.m:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { return [self.authorizationFlowManagerDelegate resumeExternalUserAgentFlowWithURL:url];}

Android

Pēc veiksmīgas saistīšanas jums jāpievieno android / app / build.grandle file defaultConfig vērtība kā identifikatori novirza URL.

manifestPlaceholders = [
appAuthRedirectScheme: “io.identityserver.demo”
]

Lietošana

import { authorize } from 'react-native-app-auth';
// base configconst config = { issuer: '', clientId: '', redirectUrl: '', scopes: [''],};
// use the client to make the auth request and receive the authStatetry { const result = await authorize(config); // result includes accessToken, accessTokenExpirationDate and refreshToken} catch (error) { console.log(error);}

Priecīgu kodēšanu!

Paldies, ka lasījāt tik tālu. Ja jums patika šī ziņa, lūdzu, kopīgojiet, komentējiet un nospiediet to? dažas reizes (līdz 50 reizēm). . . Varbūt tas kādam palīdzēs.

Sekojiet man vietnē Medium vai Github, ja jūs nākotnē interesē padziļinātāki un informatīvāki raksti. ?