
Myslím, že pro mnoho lidí je po WWDC 2019 již známý Sign In with Apple (zkráceně SIWA). V tomto článku se podělím o konkrétní úskalí, se kterými jsme se setkali při integraci této funkce do našeho licenčního portálu. Tento článek není úplně určen těm, kteří se teprve rozhodli prozkoumat SIWA (na konci textu jsem dal několik seznamovacích odkazů). V tomto materiálu pravděpodobně mnozí naleznou odpovědi na otázky, které mohou při integraci nového servisu Apple vzniknout.
Apple neumožňuje vlastní přesměrování
Na tuto otázku dosud na vývojářských fórech odpověď nevidím. Podstata je následující: pokud chcete využít SIWA JS API, tzn. nepracovat přes nativní SDK z důvodu absence takového (ne macOS/iOS nebo staré verze těchto systémů), potřebujete svůj veřejný portál, jinak to nejde. Protože na portálu WWDR musíte zaregistrovat a potvrdit, že jste vlastníkem svého domény, a pouze na ní můžete umístit povolená přesměrování podle Apple:

Co dělat, pokud chcete zachytit přesměrování v aplikaci? Tento problém jsme vyřešili velmi jednoduše: na našem portálu jsme vytvořili seznam povolených přesměrování pro naše aplikace, které si tyto žádají před zobrazením autorizační stránky SIWA. A jednoduše provedeme přesměrování z portálu do aplikace s daty, které jsme získali od Apple. Jednoduše a efektivně.
Problémy s e-mailem
Podívejme se, jak jsme řešili problémy s e-mailem uživatele. Za prvé, neexistuje žádné REST API, které by umožňovalo získat tyto informace z backendu — pouze klient získává tyto údaje a může je předat spolu s autorizačním kódem.
Za druhé, informace o jménu a e-mailu uživatele jsou předávány pouze jednou, při první registraci uživatele v aplikaci přes Apple, kde si uživatel vybírá možnosti sdílení svých osobních údajů.
Sama o sobě tyto problémy nejsou příliš kritické, pokud bylo úspěšně vytvořeno spojení se sociálním profilem na portálu — identifikátor uživatele je stejný a je připojen k Team ID — t.j. je jeden pro všechny aplikace vaší týmu, integrované s SIWA. Pokud však došlo k přihlášení přes Apple a pak nastala chyba, a spojení na portálu nebylo vytvořeno, tak jedinou možností je poslat uživatele na appleid.apple.com, přerušit spojení s aplikací a zkusit to znovu. Vlastně se problém řeší napsáním odpovídající KB článku a odkazem na něj.
Další, nepříjemnější problém se týká nového konceptu proxy e-mailu, který Apple zavedl. V našem případě, pokud uživatel již byl na licenčním portálu se svým skutečným e-mailem a při prvním přihlášení přes Apple zvolí možnost skrýt e-mail, registruje se nový účet s tímto proxy e-mailem, v kterém očividně nejsou žádné licence, což koncového uživatele uvádí do zmatku.
Řešení tohoto problému je poměrně jednoduché: jelikož identifikátor uživatele je stejný v SIWA a nezávisí na vybraných možnostech/aplikaci, do které se přihlašuje, tak jednoduše pomocí speciálního skriptu umožníme přepnout toto spojení s Applem na jiný účet se skutečným e-mailem uživatele a tímto způsobem 'obnovíme jeho nákupy'. Po této proceduře začíná uživatel přes SIWA přicházet do jiného účtu na portálu a vše mu funguje správně.
Při přihlášení přes webový portál není ikona aplikace.
Pro řešení dalšího problému jsme se obrátili na zástupce Apple a sdílíme získané znalosti:

T.j. smysl je v následujícím: v čele SIWA skupiny může být stanovena pouze aplikace macOS/iOS, do které se přidávají potřebné service IDs portálů. Odpovídajícím způsobem, aby se ikona ve hlavní aplikaci zobrazila, musí být zveřejněny verze v App Store s médiem, které prošlo potvrzením v Apple. Ikona bude vzata odtud.
Pokud tedy máte pouze portál a aplikaci z App Store nemáte, tak hezké ikony nebude, ale s názvem aplikace se dá vycoupat — při absenci médií u hlavní aplikace jsou tyto informace převzaty z popisu service ID:


Počet prvků ve skupině SIWA je omezen na 5.
V tuto chvíli neexistuje žádné řešení tohoto problému, kromě použití více skupin. Pokud vám chybí 6 identifikátorů: 1 hlavní aplikace a 5 závislých, při pokusu o registraci dalšího uvidíte tuto zprávu:

Vytvořili jsme skupiny pro náš licenční portál a pro každou z aplikací, které s tímto portálem operují. Co se týče omezení slotů, již jsme na to vytvořili radar v Apple a čekáme na jejich odpověď.
Užitečné odkazy
Nejužitečnější , podle mého názoru, podle kterého jsem v zásadě vše dělal. Polovičně užitečná dokumentace od Apple .
Užijte si! Otázky, myšlenky, nápady a návrhy jsou vítány v komentářích.
Zdroj: habr.com
