
Cred că pentru mulți dintre noi, după WWDC 2019, Sign In with Apple (pe scurt SIWA) este deja cunoscut. În acest material voi povesti despre obstacolele specifice cu care ne-am confruntat în integrarea acestei funcționalități în portalul nostru de licențiere. Această articol nu este în totalitate pentru cei care tocmai au decis să se familiarizeze cu SIWA (pentru aceștia am oferit o serie de linkuri informative la sfârșitul textului). În această lucrare, cu siguranță mulți vor găsi răspunsuri la întrebările care pot apărea în timpul integrării noului serviciu Apple.
Apple nu permite redirecționări personalizate
De fapt, nu văd un răspuns la această întrebare pe forumurile pentru dezvoltatori. Esența este următoarea: dacă doriți să folosiți SIWA JS API, adică să nu lucrați prin SDK-ul nativ din diverse motive (nu macOS/iOS sau o versiune veche a acestor sisteme), atunci aveți nevoie de propriul portal public, altfel nu se poate. Pentru că trebuie să înregistrați și să confirmați pe portalul WWDR că sunteți proprietar al domeniului dvs. și doar pe acesta pot fi configurate redirecționările permise din perspectiva Apple:

Ce să facem dacă dorim să interceptăm redirecționarea în aplicație? Noi am rezolvat această problemă extrem de simplu: am creat pe portalul nostru o listă de redirecționări permise pentru aplicațiile noastre, care sunt solicitate înainte de a arăta pagina de autentificare SIWA. Și pur și simplu facem o redirecționare de la portal la aplicație cu datele primite de la Apple. Simplu și la obiect.
Probleme cu e-mailul
Să analizăm cum am rezolvat problemele legate de e-mailul utilizatorului. În primul rând, nu există niciun REST API care să permită obținerea acestor informații din backend - doar clientul primește aceste date și poate să le transmită împreună cu codul de autorizare.
În al doilea rând, informațiile despre nume și e-mailul utilizatorului sunt transmise doar o singură dată, la prima autentificare a utilizatorului în aplicație prin Apple, unde utilizatorul selectează opțiunile de partajare a datelor sale personale.
Aceste probleme, de sine stătătoare, nu sunt neapărat critice, dacă conexiunea cu profilul social a fost stabilită cu succes pe portal — identificatorul utilizatorului este același și este legat de Team ID — adică, este același pentru toate aplicațiile echipei dvs., integrate cu SIWA. Însă, dacă s-a efectuat logarea prin Apple și ulterior a apărut o eroare, iar conexiunea pe portal nu a fost creată, atunci singura opțiune este să trimiteți utilizatorul pe appleid.apple.com, să întrerupă conexiunea cu aplicația și să încerce din nou. Practic, problema se rezolvă prin redactarea unui articol KB corespunzător și linkarea către acesta.
Următoarea problemă mai neplăcută este că Apple a creat un nou concept de proxy e-mail. În cazul nostru, dacă utilizatorul a fost deja pe portalul de licențiere cu adevăratul său e-mail și la prima logare prin Apple alege opțiunea de a ascunde e-mailul, se înregistrează un nou cont cu acest proxy e-mail, care evident nu conține licențe, ceea ce pune utilizatorul final într-o situație dificilă.
Soluția acestei probleme este destul de simplă: deoarece identificatorul utilizatorului rămâne același în SIWA și nu depinde de opțiunile/aplicația selectată pentru autentificare, putem pur și simplu, prin intermediul unui script special, să permitem comutarea acestei legături cu Apple către un alt cont cu adevăratul e-mail al utilizatorului și astfel să „recuperăm achizițiile”. După această procedură, utilizatorul începe să acceseze, prin SIWA, un alt cont pe portal și totul funcționează corect.
La autentificarea prin portalul web, nu există pictograma aplicației.
Pentru a rezolva o altă problemă, am cerut clarificări de la reprezentanții Apple și împărtășim cunoștințele obținute:

Deci, ideea este următoarea: la baza grupului SIWA poate fi pus doar o aplicație macOS/iOS, în care se adaugă ID-urile de serviciu necesare ale portalelor. Prin urmare, pentru ca pictograma aplicației principale să fie afișată, trebuie să existe versiuni publicate în App Store cu media, care să fi fost aprobate de Apple. Pictograma va fi preluată de acolo.
Așadar, dacă aveți doar portalul și nu există aplicații în App Store, nu va exista o pictogramă frumoasă, dar cu numele aplicației ne putem descurca — în absența media la aplicația principală, această informație este preluată din Descrierea ID-ului de serviciu:


Numărul de elemente din grupul SIWA este limitat la 5.
În prezent, nu există o soluție pentru această problemă, în afară de a folosi mai multe grupuri; dacă vă lipsesc 6 identificatori: 1 principal și 5 dependenți, atunci, când încercați să înregistrați următorul, veți vedea un astfel de mesaj:

Am creat grupuri pentru portalul nostru de licențe și pentru fiecare dintre aplicațiile care operează cu acest portal. În legătură cu restricția sloturilor, am deschis deja un radar la Apple și așteptăm răspunsul lor.
Linkuri utile
Cel mai util , din punctul meu de vedere, pe care m-am bazat în esență. Documentație semi-utilă de la Apple .
Distracție plăcută! Întrebările, gândurile, ideile și propunerile sunt binevenite în comentarii.
Sursa: habr.com
