2016-02-29 6 views
0

Я пытаюсь использовать аутентификацию JWT с Firebase, но я всегда получал эту ошибку: «Неустранимая ошибка: нераскрытая Firebase \ JWT \ SignatureInvalidException: проверка подписи не удалась».Firebase JWT: проверка подписи не удалась

Код это:

$key = "test"; 

$tokenId = base64_encode(mcrypt_create_iv(32)); 
$issuedAt = time(); 
$notBefore = $issuedAt + 10; 
$expire  = $notBefore + 60; 
$serverName = $_SERVER["SERVER_NAME"]; 


$data = [ 
    'iat' => $issuedAt, 
    'jti' => $tokenId, 
    'iss' => $serverName, 
    'nbf' => $notBefore, 
    'exp' => $expire, 
    "userId" => 1 
]; 


$secretKey = base64_decode($key); 


$jwt = \Firebase\JWT\JWT::encode($data, $secretKey, 'HS256'); 

// and when I decode the tokens, I got that exception 
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256')); 

Что не так?

ответ

2

Вам не нужно $secretKey или base64_decode ключ к этому вопросу, просто сделать:

$jwt = \Firebase\JWT\JWT::encode($data, $key, 'HS256'); 
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256')); 
+0

Привет, ты сделал ключ опечатка $$? Это не сработает. –

+1

Я считаю, что ты прав; исправил это. –

+0

BTW один вопрос (возможно, не связанный с этим вопросом, но я прошу вас ответить): я посылаю код состояния 401 всякий раз, когда токен истек/Отсутствует токен в заголовках/Токен недействителен. Таким образом, человек, который использует мои API, не знает, как справиться с этим. Например, он не может изменить ситуацию, если 401 был вызван из-за проблемы, связанной с токеном, или чего-то еще. Как нам с этим справиться? –

Смежные вопросы