Jak w Parallels pokonaliśmy funkcję Sign In with Apple

Jak w Parallels pokonaliśmy funkcję Sign In with Apple

Myślę, że wiele osób słyszało już o Sign In with Apple (w skrócie SIWA) po WWDC 2019. W tym artykule opowiem, z jakimi konkretnymi pułapkami musiałem się zmierzyć, integrując to z naszym portalem licencyjnym. Artykuł ten raczej nie jest dla tych, którzy dopiero zdecydowali się zrozumieć SIWA (dla nich na końcu tekstu podałem szereg linków edukacyjnych). W tym materiale najprawdopodobniej wiele osób znajdzie odpowiedzi na pytania, które mogą pojawić się podczas integracji nowej usługi Apple.

Apple nie zezwala na niestandardowe przekierowania

Właściwie nadal nie widzę odpowiedzi na to pytanie na forach programistów. Rzecz w tym, że jeśli chcesz skorzystać z API SIWA JS, tj. nie działasz poprzez natywny SDK z powodu braku takiego z tego czy innego powodu (nie macOS/iOS lub stara wersja tych systemów), wtedy potrzebujesz własnego portalu publicznego, inaczej nie ma innego wyjścia. Ponieważ na portalu WWDR musisz się zarejestrować i potwierdzić, że jesteś właścicielem swojej domeny i tylko na niej możesz załączyć akceptowalne z punktu widzenia Apple przekierowania:

Jak w Parallels pokonaliśmy funkcję Sign In with Apple

Co zrobić jeśli chcesz przechwycić przekierowanie w aplikacji? Rozwiązaliśmy ten problem niezwykle prosto: utworzyliśmy na naszym portalu listę akceptowalnych przekierowań dla naszych aplikacji, które zamawiają one przed wyświetleniem strony autoryzacyjnej SIWA. A my po prostu przekierowujemy z portalu do aplikacji z danymi otrzymanymi od Apple. Prosty i zły.

Problemy z pocztą elektroniczną

Przyjrzyjmy się, jak rozwiązaliśmy problemy z pocztą elektroniczną użytkownika. Po pierwsze, nie ma API REST, które pozwalałoby na pobranie tych informacji z backendu - tylko klient otrzymuje te dane i może je przesłać wraz z kodem autoryzacyjnym.

Po drugie, informacja o nazwie użytkownika i adresie e-mail przekazywana jest tylko raz, do pierwszego zalogowania się użytkownika do aplikacji za pośrednictwem Apple, gdzie użytkownik wybiera opcję udostępnienia swoich danych osobowych.

Same w sobie problemy te nie są bezpośrednio krytyczne, jeśli w portalu pomyślnie utworzono połączenie z profilem społecznościowym - identyfikator użytkownika jest taki sam i jest powiązany z identyfikatorem zespołu - tj. jest taki sam dla wszystkich aplikacji zintegrowanych z SIWA Twojego zespołu. Jeżeli jednak logowanie odbywało się przez Apple, a w dalszej części ścieżki pojawił się błąd i połączenie na portalu nie zostało utworzone, to jedyną opcją jest wysłanie użytkownika na stronę appleid.apple.com, zerwanie połączenia z aplikacją i Spróbuj ponownie. Właściwie problem można rozwiązać, pisząc odpowiedni artykuł KB i linkując do niego.

Kolejny, bardziej nieprzyjemny problem wiąże się z faktem, że Apple wpadł na nową koncepcję poczty proxy. W naszym przypadku, jeśli użytkownik był już na portalu licencyjnym ze swoim prawdziwym mydłem i logując się po raz pierwszy przez Apple, wybierze opcję ukrycia adresu e-mail, nowe konto zostanie zarejestrowane z tym adresem e-mail proxy mail, który oczywiście nie zawiera żadnych licencji, co stawia użytkownika końcowego w ślepym zaułku.

Rozwiązanie tego problemu jest dość proste: ponieważ. Jeżeli identyfikator użytkownika jest taki sam w SIWA i nie zależy od wybranych opcji/aplikacji do której następuje logowanie, to po prostu korzystamy ze specjalnego skryptu, który pozwala na przełączenie tego połączenia z Apple na inne konto z prawdziwymi danymi użytkownika mydło i tym samym „przywróć swoje zakupy” ” Po tej procedurze użytkownik zaczyna uzyskiwać dostęp do innego konta w portalu poprzez SIWA i wszystko działa dla niego poprawnie.

Podczas logowania poprzez portal internetowy nie ma ikony aplikacji

Aby rozwiązać kolejny problem, zwróciliśmy się do przedstawicieli Apple o wyjaśnienie i podzielenie się naszą wiedzą:

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

Te. znaczenie jest następujące: na czele grupy SIWA m.b. Dostarczana jest tylko aplikacja macOS/iOS, do której dodane są już niezbędne identyfikatory usług portali. Odpowiednio, aby wyświetlić ikonę aplikacji głównej. wersje opublikowane w App Store z nośnikami zweryfikowanymi przez firmę Apple. Ikona zostanie pobrana stamtąd.

Odpowiednio, jeśli masz tylko portal i żadnych aplikacji z App Store, to nie będziesz miał pięknej ikony, ale możesz obejść się bez nazwy aplikacji - jeśli główna aplikacja nie ma multimediów, ta informacja jest pobrane z identyfikatora usługi opisu:
Jak w Parallels pokonaliśmy funkcję Sign In with Apple
Jak w Parallels pokonaliśmy funkcję Sign In with Apple

Liczba elementów w grupie SIWA jest ograniczona do 5

Na ten moment nie ma rozwiązania tego problemu poza użyciem wielu grup, jeśli brakuje Ci 6 identyfikatorów: 1 aplikacji głównej i 5 zależnych, to przy próbie rejestracji kolejnej zobaczysz komunikat:

Jak w Parallels pokonaliśmy funkcję Sign In with Apple

Stworzyliśmy grupy dla naszego portalu licencyjnego i dla każdej aplikacji współpracującej z tym portalem. Jeśli chodzi o ograniczenia dotyczące slotów, uruchomiliśmy już radar w firmie Apple i czekamy na ich odpowiedź.

Przydatne linki

Najbardziej użyteczne połączyćmoim zdaniem, zgodnie z którą w zasadzie zrobiłem wszystko. Półprzydatna stacja dokująca firmy Apple tutaj.

Cieszyć się! Pytania, przemyślenia, pomysły i sugestie są mile widziane w komentarzach.

Źródło: www.habr.com

Dodaj komentarz