Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/PHP JWT过期_Php_Android_Token_Jwt - Fatal编程技术网

Android/PHP JWT过期

Android/PHP JWT过期,php,android,token,jwt,Php,Android,Token,Jwt,我已经用JWT实现了全系统。除了一个关键点,即过期方法外,一切都很正常 Map<String, Object> header = new HashMap<>(); header.put("typ", Header.JWT_TYPE); String compactJws = Jwts.builder() .setHeader(header) .claim("email", email)

我已经用JWT实现了全系统。除了一个关键点,即过期方法外,一切都很正常

Map<String, Object> header = new HashMap<>();
    header.put("typ", Header.JWT_TYPE);
    String compactJws = Jwts.builder()
            .setHeader(header)
            .claim("email", email)
            .claim("password", password)
            .setIssuedAt(new Date(System.currentTimeMillis()))
            .setExpiration(new Date(System.currentTimeMillis() + 3600000))
            .signWith(SignatureAlgorithm.HS256, settings.getString("keychain", "password"))
            .compact();
    Request request = new Request.Builder()
            .url(SITE_URL + "secure.php")
            .post(new FormBody.Builder().add("data", compactJws).build())
            .tag("login")
            .build();
    okClient.newCall(request).enqueue(this);

我在这里遗漏了什么???

我认为java中的时间戳以毫秒为单位,php中的时间戳以秒为单位,因为firebase在解码时使用time()。在您的系统上尝试%1000。currentTimeMillis()系统。currentTimeMillis()被转换为java日期对象查看firebase实现,我发现它抛出了
意外值异常
,原因有7种。也许您可以记录该异常的消息
$e->getMessage()
,并找出问题所在?是php中的解码函数
<?php
$jwt = $_POST['data'];
require_once 'jwt/src/BeforeValidException.php';
require_once 'jwt/src/ExpiredException.php';
require_once 'jwt/src/SignatureInvalidException.php';
require_once 'jwt/src/JWT.php';
use \Firebase\JWT\JWT;
try {
  $decoded_array = (array) JWT::decode($jwt, base64_decode("password"), array('HS256'));
}
catch (SignatureInvalidException $e) {
    echo json_encode(array('user_id' => - 3, 'title' => 'Contact 3gcb19@gmail.com', 'msg' => 'SignatureInvalidException'));
  exit(0);
}
catch (ExpiredException $e) {
    echo json_encode(array('user_id' => - 3, 'title' => 'Contact 3gcb19@gmail.com', 'msg' => 'ExpiredException'));
  exit(0);
}
catch (UnexpectedValueException $e) {
    echo json_encode(array('user_id' => - 3, 'title' => 'Contact 3gcb19@gmail.com', 'msg' => 'UnexpectedValueException'));
  exit(0);
}
$email = $decoded_array['email'];
$password = $decoded_array['password'];
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + 3600000))