質問するログイン新規登録

質問編集履歴

3

コードとエラー内容を修正しました

2019/05/15 03:04

投稿

nakatsus
nakatsus

スコア11

title CHANGED
File without changes
body CHANGED
@@ -5,46 +5,17 @@
5
5
  上手く動作しません。
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
-
9
8
  Traceback (most recent call last):
10
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\jwt\algorithms.py", line 349, in prepare_key
11
- key = load_pem_public_key(key, backend=default_backend())
12
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\primitives\serialization\base.py", line 20, in load_pem_public_key
13
- return backend.load_pem_public_key(data)
14
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1071, in load_pem_public_key
15
- self._handle_key_loading_error()
16
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1329, in _handle_key_loading_error
17
- raise ValueError("Could not deserialize key data.")
18
- ValueError: Could not deserialize key data.
19
-
20
- During handling of the above exception, another exception occurred:
21
-
22
- Traceback (most recent call last):
23
- File "c:/Users/nakatsus/Documents/AppleAPI/GetReport.py", line 84, in <module>
9
+ File "c:/Users/nakatsus/Documents/AppleAPI/GetReport.py", line 90, in <module>
24
10
  get_apple_reports(request)
25
11
  File "c:/Users/nakatsus/Documents/AppleAPI/GetReport.py", line 11, in get_apple_reports
26
12
  token = __get_apple_store_connect_api_token()
27
- File "c:/Users/nakatsus/Documents/AppleAPI/GetReport.py", line 41, in __get_apple_store_connect_api_token
13
+ File "c:/Users/nakatsus/Documents/AppleAPI/GetReport.py", line 33, in __get_apple_store_connect_api_token
28
- headers=headers).decode()
29
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\jwt\api_jwt.py", line 65, in encode
30
- json_payload, key, algorithm, headers, json_encoder
31
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\jwt\api_jws.py", line 113, in encode
32
- key = alg_obj.prepare_key(key)
33
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\jwt\algorithms.py", line 351, in prepare_key
34
- key = load_pem_private_key(key, password=None, backend=default_backend())
14
+ exp = int(time.mktime((datetime.now() + timedelta(minutes=20)).timetuple()))
35
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\primitives\serialization\base.py", line 16, in load_pem_private_key
36
- return backend.load_pem_private_key(data, password)
37
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1045, in load_pem_private_key
38
- password,
39
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1271, in _load_key
40
- self._handle_key_loading_error()
41
- File "C:\Users\nakatsus\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1329, in _handle_key_loading_error
42
- raise ValueError("Could not deserialize key data.")
43
- ValueError: Could not deserialize key data.
15
+ NameError: name 'time' is not defined
44
-
45
16
  ### 該当のソースコード
46
17
 
47
- ```ここに言語を入力
18
+ ```python3
48
19
  import json
49
20
  import jwt
50
21
  import requests
@@ -68,24 +39,31 @@
68
39
 
69
40
  def __get_apple_store_connect_api_token():
70
41
 
42
+ ALGORITHM = 'ES256'
43
+
44
+ APP_STORE_KEY_ID = 'XXXXXXXXXX'
45
+ ISSUER_ID = 'XXXXX-XXXXXX-XXXXX-XXXXX'
46
+ STORE_AUTH_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.p8'
47
+
48
+ secret = ""
49
+ with open(STORE_AUTH_KEY,'r') as f:
50
+ secret = f.read()
71
- jst = datetime.timezone(datetime.timedelta(hours=+9), 'JST')
51
+ exp = int(time.mktime((datetime.now() + timedelta(minutes=20)).timetuple()))
52
+ token = jwt.encode(
53
+ {
54
+ 'iss': ISSUER_ID,
55
+ "exp": exp,
72
- now_ut = int(datetime.datetime.now(jst).timestamp()) + 20 * 60
56
+ "aud": "appstoreconnect-v1"
57
+ },
58
+ secret,
59
+ algorithm=ALGORITHM,
60
+ headers={
61
+ 'alg': ALGORITHM,
62
+ 'kid': APP_STORE_KEY_ID,
63
+ "typ": "JWT"
64
+ }
65
+ )
73
66
 
74
- headers = {"alg": "ES256",
75
- "kid": 'キーID',
76
- "typ": "JWT"}
77
- payload = {"iss": 'ISS',
78
- "exp": now_ut,
79
- "aud": "appstoreconnect-v1"}
80
-
81
- private_key = 'プライベートキー'
82
- private_key = re.sub(r'\n',r'\n',private_key)
83
-
84
- token = jwt.encode(payload,
85
- private_key,
86
- algorithm='ES256',
87
- headers=headers).decode()
88
-
89
67
  logging.debug('Apple Store Connect API token: ' + token)
90
68
 
91
69
  return token
@@ -128,7 +106,6 @@
128
106
  if __name__ == '__main__':
129
107
  request = {"args": {"date_str": None}}
130
108
  get_apple_reports(request)
131
-
132
109
  ```
133
110
  ### 試したこと
134
111
 

2

修正

2019/05/15 03:04

投稿

nakatsus
nakatsus

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,4 @@
1
- ```ここに言語を入力
2
- コード
3
- ```### 前提・実現したいこと
1
+ ### 前提・実現したいこと
4
2
 
5
3
  pythonにてApp Store Connectからレポートを取得したいのですが、
6
4
  参考になるサイトが少なく、拾ってきたコードを繋げて実行しているのですが、

1

コードにインデントを挿入しました。

2019/05/15 02:21

投稿

nakatsus
nakatsus

スコア11

title CHANGED
@@ -1,1 +1,1 @@
1
- Apple Store ConnectからAPIを使ってレポートを取得したい
1
+ App Store ConnectからAPIを使ってレポートを取得したい
body CHANGED
@@ -1,4 +1,6 @@
1
+ ```ここに言語を入力
2
+ コード
1
- ### 前提・実現したいこと
3
+ ```### 前提・実現したいこと
2
4
 
3
5
  pythonにてApp Store Connectからレポートを取得したいのですが、
4
6
  参考になるサイトが少なく、拾ってきたコードを繋げて実行しているのですが、
@@ -44,6 +46,7 @@
44
46
 
45
47
  ### 該当のソースコード
46
48
 
49
+ ```ここに言語を入力
47
50
  import json
48
51
  import jwt
49
52
  import requests
@@ -128,6 +131,7 @@
128
131
  request = {"args": {"date_str": None}}
129
132
  get_apple_reports(request)
130
133
 
134
+ ```
131
135
  ### 試したこと
132
136
 
133
137
  ここに問題に対して試したことを記載してください。