A maneira recomendada e mais fácil de instalar a biblioteca é através do Composer.
composer require azimolabs/apple-sign-in-php-sdk
Versão PHP | Versão da biblioteca |
---|---|
5.x | NOT SUPPORTED |
> 7.0 <= 7.3 | 1.4.x |
>= 7.4 < 8.0 | 1.5.x |
>= 8.0 & ^7.4 | 2.0.x |
>= 8.1 | 3.0.x |
O versionamento segue o padrão semver.
Esta descrição pressupõe que você já tenha gerado IdentityToken . Lembre-se que o token é válido SOMENTE por 10 minutos.
A primeira etapa para verificar o token de identidade é gerar uma chave pública. Para gerar valores exponent
e modulus
de chave pública são necessários. Ambas as informações são expostas no endpoint da API da Apple. Esses valores diferem dependendo do algoritmo.
A segunda etapa é verificar se identityToken
fornecido é válido em relação à chave pública gerada. Nesse caso, temos certeza de que identityToken
não estava malformado.
A terceira etapa é a validação se o token não expirou. Além disso, vale a pena verificar issuer
e audience
, exemplos são mostrados abaixo.
Depois de clonar o repositório, certifique-se de que as dependências do compositor estejam instaladas executando composer install -o
.
$ appleJwtFetchingService = new Auth Service AppleJwtFetchingService (
new Auth Jwt JwtParser ( new Lcobucci JWT Token Parser ( new Lcobucci JWT Encoding JoseEncoder ())),
new Auth Jwt JwtVerifier (
new Api AppleApiClient (
new GuzzleHttp Client (
[
' base_uri ' => ' https://appleid.apple.com ' ,
' timeout ' => 5 ,
' connect_timeout ' => 5 ,
]
),
new Api Factory ResponseFactory ()
),
new Lcobucci JWT Validation Validator (),
new Lcobucci JWT Signer Rsa Sha256 ()
),
new Auth Jwt JwtValidator (
new Lcobucci JWT Validation Validator (),
[
new Lcobucci JWT Validation Constraint IssuedBy ( ' https://appleid.apple.com ' ),
new Lcobucci JWT Validation Constraint PermittedFor ( ' com.c.azimo.stage ' ),
]
),
new Auth Factory AppleJwtStructFactory ()
);
$ appleJwtFetchingService -> getJwtPayload ( ' your.identity.token ' );
Se você não quiser copiar e colar o código acima, você pode colar identityToken
recém-gerado em tests/E2e/Auth/AppleJwtFetchingServiceTest.php:53
e executar testes com o comando simples php vendor/bin/phpunit tests/E2e
.
$ php vendor/bin/phpunit tests/E2e
PHPUnit 9.2.5 by Sebastian Bergmann and contributors.
Random seed: 1594414420
. 1 / 1 (100%)
Time: 00:00.962, Memory: 8.00 MB
OK (1 test, 1 assertion)
É bem-vindo abrir uma solicitação pull com uma correção para qualquer problema:
phpseclib/phpseclib
para a versão 3.0.7
lcobucci/jwt
para a versão 4.x
. Relatado em: A conversão implícita de chaves de strings está obsoleta. #2 7.4.3
. Relatado em Uncaught JsonException: caracteres UTF-8 mal formados 8.0.0