diff --git a/pom.xml b/pom.xml index f766f08..40e7c27 100644 --- a/pom.xml +++ b/pom.xml @@ -40,23 +40,23 @@ commons-lang3 3.12.0 - - io.jsonwebtoken - jjwt-api - 0.11.5 - - - io.jsonwebtoken - jjwt-impl - 0.11.5 - runtime - - - io.jsonwebtoken - jjwt-jackson - 0.11.5 - runtime - + + + + + + + + + + + + + + + + + com.github.penggle kaptcha diff --git a/src/main/java/com/example/demo/Util/AppleTokenGenerator.java b/src/main/java/com/example/demo/Util/AppleTokenGenerator.java index be3e311..a0fcff0 100644 --- a/src/main/java/com/example/demo/Util/AppleTokenGenerator.java +++ b/src/main/java/com/example/demo/Util/AppleTokenGenerator.java @@ -1,58 +1,58 @@ -package com.example.demo.Util; - -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; -import io.jsonwebtoken.io.Decoders; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.spec.PKCS8EncodedKeySpec; -import java.util.Date; - -public class AppleTokenGenerator { - - // 你提供的真实信息(已全部填好) - private static final String KEY_ID = "3J2S9VXU3V"; - private static final String ISSUER_ID = "69a6de7e-1f9a-47e3-e053-5b8c7c11a4d1"; - private static final String P8_FILE_PATH = "E:/Work/newgold/gold-java/src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8"; - - public static String generateToken() { - try { - // 读取 P8 私钥内容 - String p8Content = Files.readString(Paths.get(P8_FILE_PATH)) - .replace("-----BEGIN PRIVATE KEY-----", "") - .replace("-----END PRIVATE KEY-----", "") - .replaceAll("\\s+", ""); - - // 解码私钥 - byte[] keyBytes = Decoders.BASE64.decode(p8Content); - PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); - KeyFactory keyFactory = KeyFactory.getInstance("EC"); - PrivateKey privateKey = keyFactory.generatePrivate(spec); - - // 生成苹果官方标准 JWT(补全typ字段,完全符合文档要求) - return Jwts.builder() - .setHeaderParam("alg", "ES256") - .setHeaderParam("kid", KEY_ID) - .setHeaderParam("typ", "JWT") // 🔴 苹果官方强制要求,之前漏了! - .setIssuer(ISSUER_ID) - .setAudience("appstoreconnect-v1") - .setIssuedAt(new Date()) - .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 15)) // 15分钟有效期(≤20分钟) - .signWith(privateKey, SignatureAlgorithm.ES256) - .compact(); - - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - -// // 运行直接输出可用 Token -// public static void main(String[] args) { -// String token = generateToken(); -// System.out.println("复制下面这一行直接用:"); -// System.out.println("Bearer " + token); +//package com.example.demo.Util; +// +//import io.jsonwebtoken.Jwts; +//import io.jsonwebtoken.SignatureAlgorithm; +//import io.jsonwebtoken.io.Decoders; +//import java.nio.file.Files; +//import java.nio.file.Paths; +//import java.security.KeyFactory; +//import java.security.PrivateKey; +//import java.security.spec.PKCS8EncodedKeySpec; +//import java.util.Date; +// +//public class AppleTokenGenerator { +// +// // 你提供的真实信息(已全部填好) +// private static final String KEY_ID = "3J2S9VXU3V"; +// private static final String ISSUER_ID = "69a6de7e-1f9a-47e3-e053-5b8c7c11a4d1"; +// private static final String P8_FILE_PATH = "E:/Work/newgold/gold-java/src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8"; +// +// public static String generateToken() { +// try { +// // 读取 P8 私钥内容 +// String p8Content = Files.readString(Paths.get(P8_FILE_PATH)) +// .replace("-----BEGIN PRIVATE KEY-----", "") +// .replace("-----END PRIVATE KEY-----", "") +// .replaceAll("\\s+", ""); +// +// // 解码私钥 +// byte[] keyBytes = Decoders.BASE64.decode(p8Content); +// PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); +// KeyFactory keyFactory = KeyFactory.getInstance("EC"); +// PrivateKey privateKey = keyFactory.generatePrivate(spec); +// +// // 生成苹果官方标准 JWT(补全typ字段,完全符合文档要求) +// return Jwts.builder() +// .setHeaderParam("alg", "ES256") +// .setHeaderParam("kid", KEY_ID) +// .setHeaderParam("typ", "JWT") // 🔴 苹果官方强制要求,之前漏了! +// .setIssuer(ISSUER_ID) +// .setAudience("appstoreconnect-v1") +// .setIssuedAt(new Date()) +// .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 15)) // 15分钟有效期(≤20分钟) +// .signWith(privateKey, SignatureAlgorithm.ES256) +// .compact(); +// +// } catch (Exception e) { +// e.printStackTrace(); +// return null; +// } // } -} \ No newline at end of file +// +//// // 运行直接输出可用 Token +//// public static void main(String[] args) { +//// String token = generateToken(); +//// System.out.println("复制下面这一行直接用:"); +//// System.out.println("Bearer " + token); +//// } +//} \ No newline at end of file