老表瞧一瞧,懒人工具类sign with apple 配置好需要的参数APPLICATION_ID 、SECRET_KEY 、FILE_KID 、TEAM_ID ,调getUserInfo()方法就完工了,不废话,看工具类
package com.zjtx.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwk.Jwk;
import com.zjtx.dto.AppleReturnTokenDTO;
import com.zjtx.util.exception.ServiceException;
import io.jsonwebtoken.*;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.RSAPublicKeySpec;
import java.util.HashMap;
import java.util.Map;
/**
* 苹果登录工具类
* @author WangDeyu (汪德宇)
* @date 2020-09-08 16:10:22
* */
public class AppleThirdUtils {
@Autowired
static RestTemplate restTemplate;
private static final Logger logger = LoggerFactory.getLogger(AppleThirdUtils.class);
/**
* client_id (应用id,从苹果注册应用获取)
* */
private static final String APPLICATION_ID = "";
/**
* 密钥key(从txt文件中获取)
* */
private static final String SECRET_KEY = "";
/**
* p8文件中获取的kid
* */
private static final String FILE_KID = "";
/**
* p8文件中获取的team_id
* */
private static final String TEAM_ID = "";
/**
* 固定值(用于验证token接口)
* */
private static final String GRANT_TYPE = "authorization_code";
/**
* 获取公钥地址
* */
private static final String PUBLIC_KEY_URL = "https://appleid.apple.com/auth/keys";
/**
* 获取验证token地址
* */
private static final String GET_ID_TOKEN = "https://appleid.apple.com/auth/token";
/**
* 苹果官网地址
* */
private static final String APPLE_URL = "https://appleid.apple.com";
/**
* 苹果验证成功后返回的用户信息中的登录时间
* */
private static fi