Skip to content

Commit 277879f

Browse files
author
JAMES FUQIAN
committed
fix refresh token POST 400 Error.
1 parent d79967c commit 277879f

File tree

3 files changed

+57
-25
lines changed

3 files changed

+57
-25
lines changed

cms_bluebutton/auth.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,18 @@ def set_dict(self, auth_token_dict):
5151
self.token_type = auth_token_dict.get("token_type")
5252

5353

54-
def refresh_auth_token(bb, auth_token):
54+
def refresh_auth_token(bb, auth_token) -> AuthorizationToken:
5555
data = {
5656
"client_id": bb.client_id,
5757
"grant_type": "refresh_token",
5858
"refresh_token": auth_token.refresh_token,
5959
}
60-
61-
headers = SDK_HEADERS
62-
63-
token_response = requests.post(
64-
url=bb.auth_token_url,
65-
data=data,
66-
headers=headers,
67-
auth=(bb.client_id, bb.client_secret),
68-
)
69-
60+
token_response = _do_post(data, bb, (bb.client_id, bb.client_secret))
7061
token_response.raise_for_status()
7162
return AuthorizationToken(token_response.json())
7263

7364

74-
def generate_authorize_url(bb, auth_data):
65+
def generate_authorize_url(bb, auth_data) -> str:
7566
params = {
7667
"client_id": bb.client_id,
7768
"redirect_uri": bb.callback_url,
@@ -94,31 +85,31 @@ def base64_url_encode(buffer):
9485
return buffer_result
9586

9687

97-
def get_random_string(length):
88+
def get_random_string(length) -> str:
9889
letters = string.ascii_letters + string.digits + string.punctuation
9990
result = "".join(random.choice(letters) for i in range(length))
10091
return result
10192

10293

103-
def generate_pkce_data():
94+
def generate_pkce_data() -> dict:
10495
verifier = generate_random_state(32)
10596
code_challenge = base64.urlsafe_b64encode(
10697
hashlib.sha256(verifier.encode("ASCII")).digest()
10798
)
10899
return {"code_challenge": code_challenge.decode("utf-8"), "verifier": verifier}
109100

110101

111-
def generate_random_state(num):
102+
def generate_random_state(num) -> str:
112103
return base64_url_encode(get_random_string(num))
113104

114105

115-
def generate_auth_data():
106+
def generate_auth_data() -> dict:
116107
auth_data = {"state": generate_random_state(32)}
117108
auth_data.update(generate_pkce_data())
118109
return auth_data
119110

120111

121-
def get_access_token_from_code(bb, auth_data, callback_code):
112+
def get_access_token_from_code(bb, auth_data, callback_code) -> dict:
122113
data = {
123114
"client_id": bb.client_id,
124115
"client_secret": bb.client_secret,
@@ -129,14 +120,7 @@ def get_access_token_from_code(bb, auth_data, callback_code):
129120
"code_challenge": auth_data["code_challenge"],
130121
}
131122

132-
mp_encoder = MultipartEncoder(data)
133-
headers = SDK_HEADERS
134-
headers["content-type"] = mp_encoder.content_type
135-
token_response = requests.post(
136-
url=bb.auth_token_url,
137-
data=mp_encoder,
138-
headers=headers
139-
)
123+
token_response = _do_post(data, bb, None)
140124
token_response.raise_for_status()
141125
token_dict = token_response.json()
142126
token_dict["expires_at"] = datetime.datetime.now(
@@ -157,3 +141,19 @@ def get_authorization_token(bb, auth_data, callback_code, callback_state):
157141
raise ValueError("Provided callback state does not match.")
158142

159143
return AuthorizationToken(get_access_token_from_code(bb, auth_data, callback_code))
144+
145+
146+
def _do_post(data, bb, auth):
147+
mp_encoder = MultipartEncoder(data)
148+
headers = SDK_HEADERS
149+
headers["content-type"] = mp_encoder.content_type
150+
return requests.post(
151+
url=bb.auth_token_url,
152+
data=mp_encoder,
153+
headers=headers
154+
) if not auth else requests.post(
155+
url=bb.auth_token_url,
156+
data=mp_encoder,
157+
headers=headers,
158+
auth=auth
159+
)

requirements/req.dev.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
pyyaml==5.4.1
12
requests==2.27.1
23
requests-mock==1.9.3
34
requests-toolbelt==0.9.1

requirements/req.dev.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,37 @@ pytest==7.0.1 \
103103
--hash=sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db \
104104
--hash=sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171
105105
# via -r requirements/req.dev.in
106+
pyyaml==5.4.1 \
107+
--hash=sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf \
108+
--hash=sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696 \
109+
--hash=sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393 \
110+
--hash=sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77 \
111+
--hash=sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922 \
112+
--hash=sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5 \
113+
--hash=sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8 \
114+
--hash=sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10 \
115+
--hash=sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc \
116+
--hash=sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018 \
117+
--hash=sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e \
118+
--hash=sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253 \
119+
--hash=sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347 \
120+
--hash=sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183 \
121+
--hash=sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541 \
122+
--hash=sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb \
123+
--hash=sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185 \
124+
--hash=sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc \
125+
--hash=sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db \
126+
--hash=sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa \
127+
--hash=sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46 \
128+
--hash=sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122 \
129+
--hash=sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b \
130+
--hash=sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63 \
131+
--hash=sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df \
132+
--hash=sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc \
133+
--hash=sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247 \
134+
--hash=sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6 \
135+
--hash=sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0
136+
# via -r requirements/req.dev.in
106137
requests==2.27.1 \
107138
--hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \
108139
--hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d

0 commit comments

Comments
 (0)