
Acredito que muitos já tenham ouvido falar do Sign In with Apple (abreviado SIWA) após a WWDC 2019. Neste artigo, vou compartilhar os desafios específicos que encontramos ao integrar essa funcionalidade em nosso portal licenciado. Este texto não é voltado para aqueles que estão começando a entender o SIWA (para esses, deixei algumas referências no final). Aqui, provavelmente, muitos encontrarão respostas para perguntas que podem surgir ao integrar o novo serviço da Apple.
A Apple não permite redirecionamentos personalizados.
Na verdade, ainda não vejo uma resposta para essa pergunta nos fóruns de desenvolvedores. A questão é a seguinte: se você quiser usar o SIWA JS API, ou seja, não trabalhar através do SDK nativo devido à falta dele por vários motivos (não estar em macOS/iOS ou ter uma versão antiga desses sistemas), você precisará de um portal público, caso contrário, não há como. Isso porque é necessário registrar e confirmar no portal WWDR que você é o proprietário do seu domínio, e somente nele podem ser vinculados os redirecionamentos permitidos pela Apple:

O que fazer se você quiser interceptar o redirecionamento no aplicativo? Resolvemos esse problema de maneira bem simples: criamos em nosso portal uma lista de redirecionamentos permitidos para nossos aplicativos, que eles solicitam antes de mostrar a página de autorização do SIWA. E simplesmente fazemos um novo redirecionamento do portal para o aplicativo com os dados recebidos da Apple. Simples e eficaz.
Problemas com e-mail
Vamos analisar como resolvemos os problemas relacionados ao e-mail do usuário. Primeiramente, não existe nenhuma API REST que permita obter essas informações do backend – apenas o cliente recebe esses dados e pode transmiti-los juntamente com o código de autorização.
Em segundo lugar, as informações sobre o nome e e-mail do usuário são transmitidas apenas uma vez, na primeira vez que o usuário faz login no aplicativo via Apple, onde o usuário escolhe as opções de compartilhamento dos seus dados pessoais.
Esses problemas em si não são críticos, se a conexão com o perfil social foi criada com sucesso no portal — o identificador do usuário é o mesmo e está vinculado ao Team ID — ou seja, ele é único para todos os aplicativos da sua equipe integrados com SIWA. Mas se o login foi realizado através da Apple e houve um erro no caminho, resultando na falha da conexão no portal, a única alternativa é enviar o usuário para appleid.apple.com, desconectar o aplicativo e tentar novamente. Na verdade, o problema é resolvido escrevendo um artigo de suporte correspondente e adicionando um link para ele.
O próximo problema, mais desagradável, está relacionado ao fato de que a Apple criou um novo conceito de e-mail proxy. No nosso caso, se o usuário já esteve no portal de licenças com seu e-mail real e, ao fazer o primeiro login através da Apple, escolhe a opção de ocultar o e-mail, um novo conta é criada com esse e-mail proxy, que evidentemente não contém nenhuma licença, o que confunde o usuário final.
A solução para esse problema é bastante simples: como o identificador do usuário é o mesmo no SIWA e não depende das opções ou do aplicativo selecionado para fazer o login, podemos, por meio de um script especial, permitir que essa conexão com a Apple seja transferida para outra conta com o e-mail real do usuário e, assim, "recuperar suas compras". Após esse procedimento, o usuário começará a acessar outra conta no portal através do SIWA e tudo funcionará corretamente.
Ao fazer o login através do portal web, não há ícone do aplicativo.
Para resolver outro problema, entramos em contato com representantes da Apple e compartilhamos o conhecimento obtido:

Ou seja, a essência é a seguinte: à frente do SIWA, o grupo pode incluir apenas um aplicativo macOS/iOS, no qual os service IDs necessários dos portais são adicionados. Assim, para que o ícone do aplicativo principal apareça, devem existir versões publicadas na App Store com mídia que passaram pela verificação da Apple. O ícone será retirado de lá.
Consequentemente, se você tiver apenas o portal e não houver aplicativo na App Store, não haverá ícone bonito, mas é possível contornar a situação com o nome do aplicativo — na ausência de mídia no aplicativo principal, essa informação é obtida da descrição do service ID:


O número de elementos no grupo SIWA é limitado a 5.
Atualmente, não há solução para esse problema, exceto usar vários grupos. Se você não tiver 6 identificadores: 1 principal e 5 dependentes, ao tentar registrar o próximo, você verá a seguinte mensagem:

Criamos grupos para nosso portal de licenciamento e para cada um dos aplicativos que operam com esse portal. Sobre a limitação de slots, já abrimos um chamado na Apple e estamos aguardando uma resposta.
Links Úteis
O mais útil , na minha opinião, pelo qual fiz tudo na essência. Um documento semiútil da Apple .
Aproveite! Perguntas, pensamentos, ideias e sugestões são bem-vindos nos comentários.
Fonte: habr.com
