วิธีที่แนะนำและง่ายที่สุดในการติดตั้งไลบรารี่คือผ่าน Composer
composer require azimolabs/apple-sign-in-php-sdk
เวอร์ชันพีเอชพี | เวอร์ชันห้องสมุด |
---|---|
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
คำอธิบายนี้อนุมานว่าคุณได้สร้าง IdentityToken แล้ว โปรดจำไว้ว่าโทเค็นนั้นใช้ได้เพียง 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
ที่สร้างขึ้นใหม่ใน 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