diff --git a/src/Token/AppleAccessToken.php b/src/Token/AppleAccessToken.php index cbb8b9b..3820f53 100644 --- a/src/Token/AppleAccessToken.php +++ b/src/Token/AppleAccessToken.php @@ -47,7 +47,17 @@ public function __construct(array $keys, array $options = []) try { $decoded = JWT::decode($options['id_token'], $key); } catch (\UnexpectedValueException $e) { - $decoded = JWT::decode($options['id_token'], $key, ['RS256']); + $decodeMethodReflection = new \ReflectionMethod(JWT::class, 'decode'); + $decodeMethodParameters = $decodeMethodReflection->getParameters(); + // Backwards compatibility for firebase/php-jwt >=5.2.0 <=5.5.1 supported by PHP 5.6 + if (array_key_exists(2, $decodeMethodParameters) && + 'allowed_algs' === $decodeMethodParameters[2]->getName() + ) { + $decoded = JWT::decode($options['id_token'], $key, ['RS256']); + } else { + $headers = (object) ['alg' => 'RS256']; + $decoded = JWT::decode($options['id_token'], $key, $headers); + } } break; } catch (\Exception $exception) {