Jak w Parallels podbiliśmy Sign In with Apple

Jak w Parallels podbiliśmy Sign In with Apple

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:

Jak w Parallels podbiliśmy Sign In with Apple

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:

https://forums.developer.apple.com/thread/123054
Jak w Parallels podbiliśmy Sign In with Apple

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:
Jak w Parallels podbiliśmy Sign In with Apple
Jak w Parallels podbiliśmy Sign In with Apple

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:

Jak w Parallels podbiliśmy Sign In with Apple

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 link, moim zdaniem, według którego wszystko realizowałem. Półprzydatna dokumentacja od Apple tutaj.

Miłej zabawy! Pytania, myśli, pomysły i sugestie są mile widziane w komentarzach.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster