'401'로 App Store Connect API 응답에 대한 REST 요청 | 'NOT_AUTHORIZED'

T. 소년

iOS 앱을 출시했고 App Store Connect API에서 일부 정보 (예 : 설치, 업데이트, 리뷰)를 가져오고 싶습니다.

공식 Apple 문서에 설명 된대로 JSON 웹 토큰을 생성합니다. 링크

그 후 헤더의 토큰으로 요청을합니다. 이제 나는 '401'| 'NOT_AUTHORIZED'매번 답변으로 다음 그림을 참조하십시오. REST 응답

다음 스 니펫에서 내 파이썬 코드를 볼 수 있습니다 (Python과 R에서 해결하려고했지만 결과는 항상 동일합니다).

먼저 JWT를 만듭니다.


    from datetime import datetime, 
    timedelta from jose import jwt, jws 
    import ecdsa 

    KEY_ID = "XXXXXXXXXX" 
    ISSUER_ID = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" 
    PRIVATE_KEY = open ( 'AuthKey_XXXXXXXXXX.p8', 'r'). read () 
    TIMESTAMP = int ((datetime.now ()-timedelta (분 = 45)). timestamp () * 1000) 

    클레임 = { "iss": ISSUER_ID, 
             "exp": TIMESTAMP, 
             "aud": "appstoreconnect-v1"} 

    header = { 
             "alg": "ES256", 
             "kid": KEY_ID, 
             "typ": "JWT"
             } 

    # 
    인코딩 된 JWT 생성 = jwt.encode (claim, PRIVATE_KEY, algorithm = 'ES256', headers = header)

이제 encode를 인쇄 하면 다음 JWT에 도달합니다 (나에게 유효 해 보입니다).


'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlhYWFhYWFhYWFgifQ.eyJpc3MiOiJYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFgiLCJleHAiOjE1NDUzOTc1MTQ1ODAsImF1ZCI6ImFwcHN0b3JlY29ubmVjdC12MSJ9.eTl6iaAW-Gp67FNmITrWCpLTtJzVdLYXIl5_KKgqaNgzwyGo7npBOBo9_u5PtLNnssQFEwJWbPND-6Ww5ACgEg'

Base64를 통해 JWT의 처음 두 부분을 디코딩하더라도 올바른 헤더 (인코딩을위한 올바른 알고리즘 포함 : 'alg': 'ES256') 및 Claim :


    jose.utils에서 수입 base64url_decode의 
    인쇄 (base64url_decode (b'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlhYWFhYWFhYWFgifQ ')) 
    인쇄 (base64url_decode (b'eyJpc3MiOiJYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFgiLCJleHAiOjE1NDUzOTc1MTQ1ODAsImF1ZCI6ImFwcHN0b3JlY29ubmVjdC12MSJ9'))

다음 그림을 참조하십시오. 출력 Base64 디코딩

이제 JWT-Object가 준비되었다고 생각하므로 API에 요청을 보냅니다.


    가져 오기 요청 

    JWT = 'Bearer'+ 인코딩 된 

    URL = 'https://api.appstoreconnect.apple.com/v1/apps'HEAD 
    = { 'Authorization': JWT} 
    print (HEAD) 

    R = requests.get (URL, headers = HEAD) 
    R.json ()

이제 내 문제를 볼 수 있습니다. 그림을 참조하십시오. Header | REST 응답

내가 숨겨진 것을주십시오 참고 KEY_ID , ISSUER_IDPRIVATE_KEY을 예제를 위해.

jps

토큰에 만료 시간이 있습니다.

"exp": 1545397514580,

50941 년 9 월 12 일과 같습니다.

마지막 세 자리를 삭제하면

"exp": 1545397514,

2018 년 12 월 21 일에 훨씬 더 의미가 있습니다.

그 라인 변경

TIMESTAMP = int( (datetime.now() - timedelta(minutes = 45)).timestamp() * 1000)

...에

TIMESTAMP = int( (datetime.now() - timedelta(minutes = 45)).timestamp())

특급 또한 1970년 1월 1일 0시 참조하기 때문에 초로 정의 된 시간 소인입니다 여기

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

요청에 대한 응답으로 401을 반환하는 Cloudfront

분류에서Dev

REST API 프로그래밍 : Python 2.7의 요청 대 urllib2-API에 인증이 필요합니다 (오류 401).

분류에서Dev

첫 번째 API 응답을 기반으로 각 배열 요소에 대한 API 요청

분류에서Dev

Apple Store Connect에서 Python JSON 웹 토큰 (JWT) GET 요청 401 오류

분류에서Dev

VSTS REST API : 401 작업 항목 API에 대한 권한 없음

분류에서Dev

axios 요청에 대한 응답으로 스트림 보내기

분류에서Dev

403으로 POST 요청에 대한 Django 응답

분류에서Dev

Ajax 요청에 대한 응답으로 Apache 및 헤더 존재

분류에서Dev

PHP REST API에서 응답 및 요청 번역

분류에서Dev

REST API에 대한 GET 요청이 서버 충돌

분류에서Dev

장기 실행 요청에 대한 NestJS REST API 시간 초과

분류에서Dev

REST API에 대한 다른 동시 요청

분류에서Dev

REST API의 HTTP 메서드에 대한 요청 및 응답에서 Json 직렬화 또는 역 직렬화를 적용하는 방법

분류에서Dev

이상한 응답을 반환하는 Stack Overflow API에 대한 요청

분류에서Dev

PHP를 통한 안드로이드 로그인 요청에 대한 응답

분류에서Dev

REST API의 작업 결과에 대한 적절한 응답

분류에서Dev

GET 요청에서 API로 응답 받기

분류에서Dev

입력 REST를 기반으로 동일한 요청에 대해 두 가지 유형의 JSON 응답을 보내는 방법은 무엇입니까?

분류에서Dev

http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

분류에서Dev

Facebook Ads API에 대한 POST 요청이있는 빈 응답 본문

분류에서Dev

Rails의 프로덕션 모드에서 HTTP 요청에 대한 응답

분류에서Dev

REST API에 대한 다중 호출 또는 Javascript로 큰 응답 본문이있는 단일 호출

분류에서Dev

REST API 버전 불일치에 대한 경고로 응답하는 방법은 무엇입니까?

분류에서Dev

cURL 요청에 대한 빈 응답 PHP

분류에서Dev

Ruby에서 API 요청시 오류 401

분류에서Dev

각도로 get 요청에 대한 응답 헤더 가져 오기

분류에서Dev

ASP NET core Serilog : 요청, 응답 및 예외 로그에 대한 다른 파일

분류에서Dev

WP API에 대한 POST 요청은 GET 요청으로 해석됩니다.

분류에서Dev

Heroku로 Django REST API 배포 [GET 요청, 무한로드]

Related 관련 기사

  1. 1

    요청에 대한 응답으로 401을 반환하는 Cloudfront

  2. 2

    REST API 프로그래밍 : Python 2.7의 요청 대 urllib2-API에 인증이 필요합니다 (오류 401).

  3. 3

    첫 번째 API 응답을 기반으로 각 배열 요소에 대한 API 요청

  4. 4

    Apple Store Connect에서 Python JSON 웹 토큰 (JWT) GET 요청 401 오류

  5. 5

    VSTS REST API : 401 작업 항목 API에 대한 권한 없음

  6. 6

    axios 요청에 대한 응답으로 스트림 보내기

  7. 7

    403으로 POST 요청에 대한 Django 응답

  8. 8

    Ajax 요청에 대한 응답으로 Apache 및 헤더 존재

  9. 9

    PHP REST API에서 응답 및 요청 번역

  10. 10

    REST API에 대한 GET 요청이 서버 충돌

  11. 11

    장기 실행 요청에 대한 NestJS REST API 시간 초과

  12. 12

    REST API에 대한 다른 동시 요청

  13. 13

    REST API의 HTTP 메서드에 대한 요청 및 응답에서 Json 직렬화 또는 역 직렬화를 적용하는 방법

  14. 14

    이상한 응답을 반환하는 Stack Overflow API에 대한 요청

  15. 15

    PHP를 통한 안드로이드 로그인 요청에 대한 응답

  16. 16

    REST API의 작업 결과에 대한 적절한 응답

  17. 17

    GET 요청에서 API로 응답 받기

  18. 18

    입력 REST를 기반으로 동일한 요청에 대해 두 가지 유형의 JSON 응답을 보내는 방법은 무엇입니까?

  19. 19

    http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

  20. 20

    Facebook Ads API에 대한 POST 요청이있는 빈 응답 본문

  21. 21

    Rails의 프로덕션 모드에서 HTTP 요청에 대한 응답

  22. 22

    REST API에 대한 다중 호출 또는 Javascript로 큰 응답 본문이있는 단일 호출

  23. 23

    REST API 버전 불일치에 대한 경고로 응답하는 방법은 무엇입니까?

  24. 24

    cURL 요청에 대한 빈 응답 PHP

  25. 25

    Ruby에서 API 요청시 오류 401

  26. 26

    각도로 get 요청에 대한 응답 헤더 가져 오기

  27. 27

    ASP NET core Serilog : 요청, 응답 및 예외 로그에 대한 다른 파일

  28. 28

    WP API에 대한 POST 요청은 GET 요청으로 해석됩니다.

  29. 29

    Heroku로 Django REST API 배포 [GET 요청, 무한로드]

뜨겁다태그

보관