
Myślę, że wielu już po WWDC 2019 zna Sign In with Apple (w skrócie SIWA). W tym materiale opiszę, z jakimi konkretnymi problemami musieliśmy się zmierzyć, integrując tę funkcjonalność z naszym portale licencyjnym. Ten artykuł nie jest całkowicie dla tych, którzy dopiero postanowili zapoznać się z SIWA (dla nich na końcu tekstu zamieściłem kilka przydatnych linków). W tym materiale, prawdopodobnie, wielu znajdzie odpowiedzi na pytania, które mogą się pojawić podczas integracji nowej usługi Apple.
Apple nie pozwala na niestandardowe przekierowania
W istocie, odpowiedzi na to pytanie wciąż nie widzę na forach deweloperskich. Chodzi o to, że jeśli będziecie chcieli skorzystać z SIWA JS API, tj. nie korzystać z natywnego SDK z powodu braku takowego z różnych przyczyn (nie macOS/iOS lub stara wersja tych systemów), będziecie potrzebować własnego publicznego portalu, inaczej nie ma mowy. Ponieważ na portalu WWDR należy zarejestrować i potwierdzić, że jesteście właścicielem swojego domeny i tylko na nią można przypiąć akceptowalne z punktu widzenia Apple przekierowania:

Co zrobić, jeśli chce się przechwycić przekierowanie w aplikacji? Rozwiązaliśmy ten problem bardzo prosto: stworziliśmy na naszym portalu listę dozwolonych przekierowań dla naszych aplikacji, które są zamawiane przed wyświetleniem strony autoryzacyjnej SIWA. Po prostu robimy przekierowanie z portalu do aplikacji z danymi uzyskanymi od Apple. Prosto i bez zbędnych komplikacji.
Problemy z e-mailami
Przyjrzyjmy się, jak rozwiązaliśmy problemy z adresem e-mail użytkownika. Po pierwsze, nie ma żadnego REST API, które pozwalałoby na uzyskanie tych informacji z backendu — tylko klient otrzymuje te dane i może je przesłać wraz z kodem autoryzacyjnym.
Po drugie, informacje o imieniu i e-mailu użytkownika są przekazywane tylko raz, podczas pierwszego logowania użytkownika do aplikacji przez Apple, gdzie użytkownik wybiera opcje udostępniania swoich danych osobowych.
Te problemy same w sobie nie są krytyczne, jeśli połączenie z profilem społecznym zostało pomyślnie utworzone na portalu — identyfikator użytkownika jest ten sam i przypisany do Team ID — tzn. jest jeden dla wszystkich aplikacji twojego zespołu zintegrowanych z SIWA. Jednak jeśli logowanie zostało dokonane przez Apple, a następnie wystąpił błąd i połączenie na portalu nie zostało utworzone, to jedyną opcją jest wysłać użytkownika na appleid.apple.com, zerwać połączenie z aplikacją i spróbować ponownie. Właściwie problem można rozwiązać, pisząc odpowiedni artykuł KB i linkując do niego.
Następny, bardziej nieprzyjemny problem związany jest z tym, że Apple wymyśliło nowy koncept z proxy e-mail. W naszym przypadku, jeśli użytkownik już był na portalu licencyjnym ze swoim prawdziwym mailem i przy pierwszym logowaniu przez Apple wybiera opcję ukrycia e-maila, rejestruje nowe konto z tym proxy e-mail, w którym oczywiście nie ma żadnych licencji, co stawia użytkownika w impasie.
Rozwiązanie tego problemu jest dość proste: ponieważ identyfikator użytkownika jest ten sam w SIWA i nie zależy od wybranych opcji/aplikacji, w której dokonuje się logowania, pozwalamy specjalnym skryptem przełączyć to połączenie z Apple do innego konta z prawdziwym mailem użytkownika, a tym samym "odzyskać swoje zakupy". Po tej procedurze użytkownik zaczyna poprzez SIWA trafiać do innego konta na portalu i wszystko działa poprawnie.
Przy logowaniu przez portal internetowy nie ma ikonki aplikacji
Aby rozwiązać inny problem, zwróciliśmy się o wyjaśnienia do przedstawicieli Apple i dzielimy się zdobytymi informacjami:

W skrócie chodzi o to, że na czoło grupy SIWA można umieścić tylko aplikację macOS/iOS, do której dodawane są potrzebne identyfikatory usług portali. W związku z tym, aby ikonka pojawiła się w głównej aplikacji, wersje opublikowane w App Store muszą posiadać media, które przeszły weryfikację w Apple. Ikonka zostanie stamtąd pobrana.
Odpowiednio, jeśli masz tylko portal i brak aplikacji z App Store, to ładnej ikonki nie będzie, ale można się jakoś uratować ze nazwą aplikacji — przy braku mediów w głównym aplikacji, te informacje pobierane są z opisu identyfikatora usługi:


Liczba elementów w grupie SIWA jest ograniczona do 5
Na chwilę obecną nie ma rozwiązania tego problemu, poza używaniem wielu grup. Jeśli brakuje ci 6 identyfikatorów: 1 głównej aplikacji i 5 zależnych, podczas próby rejestracji następnego zobaczysz następujący komunikat:

Utworzyliśmy grupy dla naszego portalu licencyjnego oraz dla każdej aplikacji, która korzysta z tego portalu. W sprawie ograniczenia slotów złożyliśmy raport do Apple i czekamy na ich odpowiedź.
Przydatne linki
Najbardziej przydatny , moim zdaniem, według którego wszystko realizowałem. Półprzydatna dokumentacja od Apple .
Miłej zabawy! Pytania, myśli, pomysły i sugestie są mile widziane w komentarzach.
Źródło: habr.com
