Рекомендуемый и самый простой способ установки библиотеки — через Composer.
composer require azimolabs/apple-sign-in-php-sdk
| PHP-версия | Библиотечная версия |
|---|---|
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 |
Управление версиями соответствует стандарту Semver.
В этом описании предполагается, что вы уже сгенерировалиidentToken. Помните, что токен действителен ТОЛЬКО 10 минут.
Первым шагом для проверки идентификационного токена является создание открытого ключа. Для генерации открытого ключа требуются значения exponent и modulus . Обе информации предоставляются в конечной точке Apple API. Эти значения различаются в зависимости от алгоритма.
Вторым шагом является проверка, действителен ли предоставленный identityToken для сгенерированного открытого ключа. Если это так, мы уверены, что identityToken не был искажен.
Третий шаг — проверка, не истек ли срок действия токена. Дополнительно стоит проверить issuer и audience , примеры показаны ниже.
После клонирования репозитория убедитесь, что зависимости композитора установлены с помощью 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 ' ); Если вы не хотите копировать и вставлять приведенный выше код, вы можете вставить свежесгенерированный identityToken вtest tests/E2e/Auth/AppleJwtFetchingServiceTest.php:53 и запустить тесты с помощью простой команды 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)Вы можете открыть запрос на включение с исправлением любой проблемы:
phpseclib/phpseclib до версии 3.0.7 lcobucci/jwt до версии 4.x Сообщается в: Неявное преобразование ключей из строк устарело. #2 7.4.3 . Сообщается в Uncaught JsonException: неверные символы UTF-8. 8.0.0