Apple App store Connect API 사용하기
Apple App store Connect API를 사용하려면 private key를 발급 받아야 한다.
이는 1번 다운로드가 가능하여 잘 보관해야함..
이 키를 이용해 JWT를 생성해 API 호출마다 같이 보내줘야한다. 그래야
올바른 사용자로 인식하여 정상적 호출이 가능하다.
키 발급 방법은 app store connect 사이트 접속후
user > key > generate key 해서 키 생성하면 됨.
이제 JWT Header를 만들어 보자.
Header Field는 총 3개로 나뉜다.
이제 토큰에 실어보낼 payload 정보를 만들어야한다.
payload는 다음과 같은 필드로 구성된다.
{
"iss": "57246542-96fe-1a63-e053-0824d011072a",
"iat": 1528407600,
"exp": 1528408800,
"aud": "appstoreconnect-v1",
"scope": [
"GET /v1/apps?filter[platform]=IOS"
]
}
apple 공식 사이트에서 확인하면 대략 이런식으로 payload를 작성하면 된다함.
아래는 실제 작성한 JWT 토큰 작성법.
public String createJWT( ){
JWSHeader header=new JWSHeader.Builder(JWSAlgorithm.ES256).keyID(keyId).type(JOSEObjectType.JWT).build();
JWTClaimsSet claimsSet=new JWTClaimsSet();
Date now=new Date();
claimsSet.setIssuer(issuer_Id);
claimsSet.setIssueTime(now);
claimsSet.setExpirationTime(new Date(now.getTime()+900000)); // exp 15 minutes
claimsSet.setAudience("appstoreconnect-v1");
SignedJWT jwt=new SignedJWT(header,claimsSet);
try{
ECPrivateKey ecPrivateKey=new ECPrivateKeyImpl(readPrivateKey(keyPath));
JWSSigner jwsSigner=new ECDSASigner(ecPrivateKey.getS());
jwt.sign(jwsSigner);
}catch(InvalidKeyException e)
{
e.printStackTrace();
}catch(JOSEException e)
{
e.printStackTrace();
}
return jwt.serialize();
}
private byte[] readPrivateKey(String keyPath){
Resource resource = new ClassPathResource(keyPath);
byte[] content = null;
try(FileReader keyReader = new FileReader(resource.getFile());
PemReader pemReader = new PemReader(keyReader))
{
PemObject pemObject = pemReader.readPemObject();
content = pemObject.getContent();
}catch(IOException e)
{
e.printStackTrace();
}
return content;
}
필요한 라이브러리
implementation 'com.nimbusds:nimbus-jose-jwt:3.10'
실제로 API 호출 부분도 필요하다면 댓글 남겨주세요.