Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

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:

Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

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:

https://forums.developer.apple.com/thread/123054
Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

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:
Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.
Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

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:

Ahoj všichni. V téhle poznámce jsem se rozhodl vyjmenovat hlavní datové struktury používané pro ukládání grafů v informatice, a také se podívat na pár dalších struktur, které se mi nějakým způsobem naskytly.

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ší odkaz, podle mého názoru, podle kterého jsem v zásadě vše dělal. Polovičně užitečná dokumentace od Apple zde.

Užijte si! Otázky, myšlenky, nápady a návrhy jsou vítány v komentářích.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster