
Creo que muchos ya han oído hablar de Sign In with Apple (abreviado SIWA) después de WWDC 2019. En este artículo, compartiré algunas de las dificultades específicas que enfrentamos al integrar esta función en nuestro portal de licencias. Este artículo no es del todo para aquellos que recién comienzan a familiarizarse con SIWA (para ellos, he proporcionado algunos enlaces informativos al final del texto). En este material, es probable que muchos encuentren respuestas a las preguntas que pueden surgir al integrar el nuevo servicio de Apple.
Apple no permite redirecciones personalizadas
En realidad, aún no encuentro respuesta a esta pregunta en los foros de desarrolladores. La cuestión es la siguiente: si deseas utilizar el SIWA JS API, es decir, no trabajar a través del SDK nativo debido a la falta de este por alguna razón (no macOS/iOS o una versión antigua de esos sistemas), necesitas tu propio portal público, de lo contrario no hay manera. Esto se debe a que en el portal WWDR debes registrar y confirmar que eres el propietario de tu dominio, y solo a él se le pueden aplicar las redirecciones permitidas desde el punto de vista de Apple:

¿Qué hacer si deseas interceptar la redirección en la aplicación? Nosotros resolvimos este problema de manera muy simple: creamos en nuestro portal una lista de redirecciones válidas para nuestras aplicaciones, las cuales solicitan antes de mostrar la página de autorización de SIWA. Y simplemente hacemos una re-redirección del portal a la aplicación con los datos recibidos de Apple. Simple y al grano.
Problemas con el correo electrónico
Veamos cómo resolvimos los problemas con el correo electrónico del usuario. En primer lugar, no existe ninguna API REST que permita obtener esta información desde el backend; solo el cliente recibe estos datos y puede pasarlos junto con el código de autorización.
En segundo lugar, la información sobre el nombre y el correo electrónico del usuario se proporciona solo una vez, en el primer inicio de sesión del usuario en la aplicación a través de Apple, donde el usuario elige las opciones de compartir sus datos personales.
Por sí mismas, estos problemas no son críticos si la conexión con el perfil social se ha creado correctamente en el portal; el identificador del usuario es el mismo y está vinculado al Team ID, es decir, es único para todas las aplicaciones de su equipo integradas con SIWA. Pero si el inicio de sesión se realizó a través de Apple y luego ocurrió un error en el camino que impidió la creación de la conexión en el portal, la única opción es enviar al usuario a appleid.apple.com, romper la conexión con la aplicación y volver a intentarlo. En realidad, el problema se soluciona escribiendo el artículo KB correspondiente y haciendo un enlace a él.
El siguiente problema más molesto está relacionado con el hecho de que Apple ha creado un nuevo concepto de correo electrónico proxy. En nuestro caso, si el usuario ya había estado en el portal de licencias con su correo real y al iniciar sesión por primera vez a través de Apple elige la opción de ocultar el correo electrónico, se registra una nueva cuenta con este correo proxy, que evidentemente no tiene licencias, lo que deja al usuario final confuso.
La solución a este problema es bastante simple: dado que el identificador del usuario es el mismo en SIWA y no depende de las opciones o la aplicación elegida para iniciar sesión, simplemente mediante un script especial permitimos cambiar esta vinculación de Apple a otra cuenta con el correo real del usuario y así "recuperar sus compras". Después de este procedimiento, el usuario comenzará a acceder a otra cuenta en el portal a través de SIWA y todo funcionará correctamente.
Al iniciar sesión a través del portal web, no hay un ícono de aplicación.
Para abordar otro problema, recurrimos a representantes de Apple para aclaraciones y compartimos los conocimientos obtenidos:

Es decir, el sentido es el siguiente: solo se puede colocar una aplicación de macOS/iOS en la cabeza del grupo SIWA, a la que ya se añaden los service IDs necesarios de los portales. Por lo tanto, para que se muestre el ícono en la aplicación principal, debe haber versiones publicadas en la App Store que incluyan medios que hayan pasado la revisión de Apple. El ícono se tomará de allí.
Por lo tanto, si solo tiene el portal y no hay aplicación en la App Store, no habrá un ícono atractivo, pero se puede arreglar con el nombre de la aplicación; en ausencia de medios en la aplicación principal, esta información se toma de la descripción del service ID:


El número de elementos en el grupo SIWA está limitado a 5.
En este momento, no hay solución para este problema, excepto utilizar múltiples grupos. Si te faltan 6 identificadores: 1 identificador principal y 5 dependientes, al intentar registrar el siguiente verás el siguiente mensaje:

Hemos creado grupos para nuestro portal de licencias y para cada una de las aplicaciones que operan con este portal. En cuanto a la limitación de ranuras, ya hemos creado un radar en Apple y esperamos su respuesta.
Enlaces útiles
El más útil , en mi opinión, por el cual hice todo en esencia. Documentación semivaliosa de Apple .
¡Disfruta! Preguntas, pensamientos, ideas y sugerencias son bienvenidos en los comentarios.
Fuente: habr.com
