Hvordan vi i Parallels erobrede Sign In with Apple

Hvordan vi i Parallels erobrede Sign In with Apple

Jeg tror mange allerede har hørt om Sign In with Apple (kort SIWA) efter WWDC 2019. I denne artikel vil jeg fortælle om de specifikke udfordringer, vi mødte, da vi integrerede denne funktion i vores licensportal. Denne artikel er ikke helt for dem, der lige har besluttet sig for at sætte sig ind i SIWA (for dem har jeg givet en række introduktionslinks i slutningen af teksten). I dette materiale vil sandsynligvis mange finde svar på de spørgsmål, der kan opstå ved integrationen af Apples nye service.

Apple tillader ikke tilpassede redirects

Faktisk kan jeg stadig ikke finde svar på dette spørgsmål på udviklerforaene. Essensen er denne: hvis du ønsker at bruge SIWA JS API, dvs. ikke arbejde via det native SDK på grund af forskellige årsager (ikke macOS/iOS eller en ældre version af disse systemer), så har du brug for din egen offentlige portal, ellers er det umuligt. For på WWDR-portalen skal du registrere og bekræfte, at du ejer dit domæne, og kun på dette domæne kan du tilføje de redirects, der er godkendt af Apple.

Hvordan vi i Parallels erobrede Sign In with Apple

Hvad skal man gøre, hvis man ønsker at opfange redirecten i appen? Vi løste dette problem på en meget enkel måde: vi oprettede på vores portal en liste over tilladte redirects for vores apps, som de anmoder om, før de viser SIWA-godkendelsessiden. Og så laver vi bare en redirect fra portalen til appen med de data, vi har modtaget fra Apple. Enkelt og ligetil.

Problemer med e-mail

Lad os se på, hvordan vi løste problemerne med brugerens e-mail. For det første er der ikke noget REST API, der giver mulighed for at hente disse oplysninger fra backend – kun klienten modtager disse data og kan overføre dem sammen med autorisationskoden.

For det andet overføres oplysningerne om brugerens navn og e-mail kun én gang, ved den allerførste login i appen via Apple, hvor brugeren vælger indstillingerne for deling af sine personlige data.

Disse problemer er ikke direkte kritiske, hvis forbindelsen til den sociale profil blev oprettet korrekt på portalen – bruger-id'et er det samme og er knyttet til Team ID – dvs. det er det samme for alle applikationer i dit team, der er integreret med SIWA. Men hvis login blev udført via Apple, og der så opstod en fejl undervejs, og forbindelsen på portalen ikke blev oprettet, er den eneste mulighed at sende brugeren til appleid.apple.com, bryde forbindelsen til applikationen og prøve igen. Problemet løses faktisk ved at skrive en tilsvarende KB-artikel og linke til den.

Det næste mere ubehagelige problem er, at Apple har introduceret et nyt koncept med proxy-e-mail. I vores tilfælde, hvis brugeren allerede har været på licensportalen med sin rigtige e-mail og vælger at skjule e-mail ved det første login via Apple, bliver der oprettet en ny konto med denne proxy-e-mail, som åbenlyst ikke har nogen licenser, hvilket efterlader slutbrugeren i en vanskelig situation.

Løsningen på dette problem er ganske enkel: da bruger-id'et er det samme i SIWA og ikke afhænger af de valgte muligheder/applikationer, hvorigennem login udføres, så kan vi ved hjælp af et specielt script lade brugeren skifte forbindelsen fra Apple til en anden konto med brugerens rigtige e-mail og dermed "genoprette sine køb". Efter denne procedure vil brugeren begynde at få adgang til en anden konto på portalen via SIWA, og alt fungerer korrekt for ham.

Ved login gennem webportalen vises der ikke noget app-ikon

For at løse et andet problem har vi kontaktet repræsentanter fra Apple, og vi deler de indhentede oplysninger:

https://forums.developer.apple.com/thread/123054
Hvordan vi i Parallels erobrede Sign In with Apple

Så essensen er den følgende: i spidsen for SIWA-gruppen kan der kun være macOS/iOS-applikationer, hvortil de nødvendige service-ID'er på portaler allerede er tilføjet. Derfor, for at ikonet vises på hovedapplikationen, skal der være offentliggjorte versioner med medieindhold i App Store, der er blevet godkendt af Apple. Ikonet vil blive taget derfra.

Derfor, hvis du kun har portalen og ikke nogen applikationer fra App Store, får du ikke noget flot ikon, men navnene på applikationerne kan navigeres – i fravær af medier i hovedapplikationen tages denne information fra beskrivelsen af service-ID'et:
Hvordan vi i Parallels erobrede Sign In with Apple
Hvordan vi i Parallels erobrede Sign In with Apple

Antallet af elementer i SIWA-gruppen er begrænset til 5

Der er i øjeblikket ingen løsning på dette problem, bortset fra at bruge mange grupper; hvis du mangler 6 ID'er: 1 hovedapplikation og 5 afhængige, vil du ved forsøg på at registrere den næste se denne meddelelse:

Hvordan vi i Parallels erobrede Sign In with Apple

Vi har oprettet grupper til vores licensportal og for hver af de applikationer, der opererer med denne portal. Vedrørende begrænsningen af slots har vi allerede indsendt en radar til Apple og venter på deres svar.

Nyttige links

Den mest nyttige link, efter min mening, som jeg i det væsentlige gjorde alt igennem. Halvnyttig dokumentation fra Apple her.

Enjoy! Spørgsmål, tanker, ideer og forslag modtages i kommentarerne.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster