
Sa tingin ko, maraming tao ang nakarinig tungkol sa Sign In with Apple (SIWA for short) mula noong WWDC 2019. Sa artikulong ito, tatalakayin ko ang mga partikular na pitfalls na naranasan namin noong isinasama ang feature na ito sa aming portal ng paglilisensya. Ang artikulong ito ay hindi eksakto para sa mga nagsisimula pa lang makipag-usap sa SIWA (para sa mga iyon, nagbigay ako ng ilang panimulang link sa dulo ng teksto). Malamang na sasagutin ng artikulong ito ang mga tanong ng marami tungkol sa pagsasama ng bagong serbisyo ng Apple.
Hindi pinapayagan ng Apple ang mga custom na pag-redirect.
Sa totoo lang, wala pa rin akong nakikitang sagot sa tanong na ito sa mga forum ng developer. Ang buod ay ito: kung gusto mong gamitin ang SIWA JS API, ibig sabihin, hindi gumagana sa pamamagitan ng native SDK dahil sa kawalan nito sa isang kadahilanan o iba pa (hindi macOSKung gumagamit ka ng iOS o mas lumang mga bersyon ng mga sistemang ito, kailangan mo ng sarili mong pampublikong portal; wala nang ibang paraan. Dahil sa WWDR portal, kailangan mong magparehistro at mag-verify ng iyong pagmamay-ari ng iyong domain, at tanging ang domain na iyon lamang ang maaaring gamitin para sa mga pag-redirect na inaprubahan ng Apple:

Ano ang dapat mong gawin kung gusto mong harangin ang isang pag-redirect sa isang app? Nalutas namin ang problemang ito nang napakasimple: gumawa kami ng listahan ng mga katanggap-tanggap na pag-redirect para sa aming mga app sa aming portal, na hinihiling namin bago ipakita ang pahina ng awtorisasyon ng SIWA. Pagkatapos ay nagre-redirect lang kami mula sa portal patungo sa app gamit ang data na natanggap mula sa Apple. Simple at prangka.
Mga problema sa email
Tingnan natin kung paano namin nalutas ang isyu sa email ng user. Una, walang REST API para kunin ang impormasyong ito mula sa backendāang client lang ang makakatanggap ng data na ito at maipapasa ito kasama ng authorization code.
Pangalawa, ang pangalan at email address ng user ay isang beses lang ipinapadala, sa unang pag-log in ng user sa app sa pamamagitan ng Apple, kung saan pinipili ng user ang mga opsyon para sa pagbabahagi ng kanilang personal na data.
Ang mga isyung ito mismo ay hindi kritikal kung matagumpay na nagawa ang link ng social profile sa portalāang user ID ay pareho at naka-link sa Team IDāibig sabihin pareho ito para sa lahat ng app ng iyong team na isinama sa SIWA. Gayunpaman, kung ang pag-login ay ginawa sa pamamagitan ng Apple at nagkaroon ng error sa ibang pagkakataon at ang link ay hindi ginawa sa portal, ang tanging opsyon ay i-redirect ang user sa appleid.apple.com, idiskonekta mula sa app, at subukang muli. Maaaring malutas ang isyung ito sa pamamagitan ng paggawa ng kaukulang artikulo sa KB at pag-link dito.
Ang susunod, mas nakakabagabag, isyu ay nagmumula sa bagong konsepto ng email ng proxy ng Apple. Sa aming kaso, kung ang isang user ay naka-log in na sa portal ng paglilisensya gamit ang kanilang tunay na email address at piniling itago ang kanilang email address kapag nagla-log in sa pamamagitan ng Apple sa unang pagkakataon, isang bagong account ang nakarehistro gamit ang proxy na email address na ito, na malinaw na walang anumang mga lisensya, na iniiwan ang end user na nalilito.
Ang solusyon sa problemang ito ay medyo simple: dahil ang user ID ay pareho sa SIWA at hindi nakadepende sa mga napiling opsyon o sa app kung saan sila nagsa-sign in, gumagamit lang kami ng isang espesyal na script upang ilipat ang koneksyon sa Apple sa ibang account gamit ang totoong email address ng user, at sa gayon ay "ibinabalik ang kanilang mga pagbili." Pagkatapos ng pamamaraang ito, maaaring mag-log in ang user sa ibang account sa portal sa pamamagitan ng SIWA, at lahat ay gumagana nang tama.
Walang icon ng app kapag nagsa-sign in sa pamamagitan ng web portal.
Upang malutas ang isa pang isyu, nakipag-ugnayan kami sa mga kinatawan ng Apple para sa paglilinaw at ibinabahagi namin ang aming mga natuklasan:

Ibig sabihin, ang kahulugan ay ang mga sumusunod: isa lamang ang maaaring ilagay sa pinuno ng grupong SIWA macOSIsang iOS app na mayroon nang mga kinakailangang portal service ID na naidagdag. Samakatuwid, para maipakita ang pangunahing icon ng app, dapat ay mayroon itong mga bersyong nai-publish sa App Store na may media na na-verify ng Apple. Kukunin ang icon mula roon.
Alinsunod dito, kung mayroon ka lamang portal at walang App Store app, hindi ka makakakuha ng magandang icon. Gayunpaman, malalampasan mo ito gamit ang pangalan ng appākung walang media ang pangunahing app, kinukuha ang impormasyong ito mula sa Description service ID:


Ang bilang ng mga elemento sa pangkat ng SIWA ay limitado sa 5
Kasalukuyang walang solusyon sa problemang ito maliban sa paggamit ng maraming grupo. Kung wala kang 6 na identifier: 1 para sa pangunahing application at 5 para sa mga dependent na application, pagkatapos ay kapag sinubukan mong irehistro ang susunod, makikita mo ang sumusunod na mensahe:

Gumawa kami ng mga grupo para sa aming portal ng paglilisensya at para sa bawat app na gumagamit nito. Inalerto na namin ang Apple tungkol sa limitasyon ng slot at naghihintay ng kanilang tugon.
Kapaki-pakinabang na mga link
Ang pinakakapaki-pakinabang , sa aking opinyon, na kung saan ay mahalagang kung paano ko ginawa ang lahat. Isang semi-kapaki-pakinabang na pantalan mula sa Apple .
Enjoy! Ang mga tanong, kaisipan, ideya, at mungkahi ay malugod na tinatanggap sa mga komento.
Pinagmulan: www.habr.com
