start using the local Git Repository created by npx create-expo-app expo-AzureAD
and sync them to DevOps.
Create new/empty DevOps Repository and set/change the remote orgin of your local Git Repository by the values provided from DevOps.
wir Installation die entwicklungsumgebung Expo CLI (local).
Create your first app
nach prioritaet, in der realisierung, geordnet brauchen wir eine Loesung fuer SPA (incl. backend). Die fehlende unterstuetzung fuer einen UseCase ist ein KO kriterium.
mit einer SPA koennen wir alle Platformen abdecken. der einfachheit halber stellen wir mit der static Site auch die RedirectUri-Page bereit.
mit diesem Subsystem (development-server) lassen wir die App local (Browser) und in der Expo Go App (Android) laufen. Sowohl die Browser als auch die Android version/variante muessen sich dazu mit dem development-server verbinden.
npx expo start // within Expo Go
typischerweise wird ein build (.apk) auf einem Device installiert.
npx expo start --dev-client
standard schoen und gut aber welcher? je nach Anbieter (IdProvider) und dessen faehigkeiten & einschraenkungen hat das massiven einfluss auf das "wie" muss eine Anwendung gebaut werden bzw. welche infrastuktur ist noetig.
wie aus dem Project-Namen schon hervorgeht konzentrieren/codieren wir fuer Azure AD only. mit dem gruenen Code beschreiben wir ausfuehrlich das warum.
zum Debuggen/Lernen siehe auch: npm oidc-provider
Run within MobileDevice
die Expo AuthSession generiert fuer fuer jeden UseCase: (Development Build, Expo Go, Web dev, Web prod, standalone-app) einen speziellen RedirectUri ...
verschiedene IdProvider erlauben keinen frei definierbaren RedirectUri. z.B. scheme Alternativen: mit der registrierung der App bekommt man einen RedirectUri zugewiesen. dann, sofern moeglich, diesen als RedirectUri in der App verwenden.
hier wird mittels eines Window: open() method zum IdProvider navigiert. Da hier ein neuer browsing context erzeugt wird ist das nicht einfach mit den DeveloperTools (F12) zu untersuchen. Der mit dem: login/proptAsync generierte: makeRedirectUri fuer den authenticate request zeigt auf den eigene BaseUri.
Die Expo Go App kann die Anwendung direkt vom development-server laden (siehe oben). Deployment-Setup idealerweise mittels Getting started
npx expo install expo-updates // install the latest expo-updates library
eas update:configure // initialize your project with EAS Update
eas build:configure // set up the configuration file (eas.json) for builds
Mit eas update
wird die Anwendung so verpackt (gebundled) das sie in der Expo Go App laufen kann.
Mit dem update wird das dann auch unter branches gelistet.
eas update
Ich Hoste das Repository aktuell bei GitHub war Azure DevOps. Fuer das Web-Deploy brauche ich, zwingend, einen im Internet stehenden Service (RedirectUri). Das laesst sich prinzipiell mit Azure static Web-Apps od. GitHub Pages machen.
Nachdem es aktuell mit GitHub Pages einfacher ist/war und ich das CI/CD Feature nicht brauche hab ich umgezogen.
ich will mit dem oeffnen der App automatisch angemeldet sein.
d.H. ich fuehre ein checkNoUserInteraction()
durch.
wenn das: 'success' === authSessionResult.type
liefert fuehre ich ein: iNetLoginAsync()
durch
andernfalls wird der Login Button enabled.
Das ist dann der UI Indikator das der Benutzer sich explizit anmelden authenticate()
muss!