@@ -137,7 +137,7 @@ public function buildAuthorizationHeaderToRequestToken(
137
137
string $ signatureMethod = \Magento \Framework \Oauth \Oauth::SIGNATURE_SHA256 ,
138
138
string $ httpMethod = 'POST '
139
139
): string {
140
- $ params ['oauth_signature ' ] = $ this ->_httpUtility -> sign (
140
+ $ params ['oauth_signature ' ] = $ this ->getSignature (
141
141
$ params ,
142
142
$ signatureMethod ,
143
143
$ consumerSecret ,
@@ -241,7 +241,7 @@ public function buildAuthorizationHeaderForAPIRequest(
241
241
$ params = array_merge ($ params , ['oauth_token ' => $ token ['oauth_token ' ]]);
242
242
$ params = array_merge ($ params , $ bodyParams );
243
243
244
- $ params ['oauth_signature ' ] = $ this ->_httpUtility -> sign (
244
+ $ params ['oauth_signature ' ] = $ this ->getSignature (
245
245
$ params ,
246
246
$ signatureMethod ,
247
247
$ consumerSecret ,
@@ -253,6 +253,46 @@ public function buildAuthorizationHeaderForAPIRequest(
253
253
return $ this ->_httpUtility ->toAuthorizationHeader ($ params );
254
254
}
255
255
256
+ /**
257
+ * Get the signature
258
+ *
259
+ * @param array $params
260
+ * @param string $signatureMethod
261
+ * @param string $consumerSecret
262
+ * @param string|null $tokenSecret
263
+ * @param string $httpMethod
264
+ * @param string $requestUrl
265
+ * @return string
266
+ */
267
+ public function getSignature (
268
+ array $ params ,
269
+ string $ signatureMethod ,
270
+ string $ consumerSecret ,
271
+ ?string $ tokenSecret ,
272
+ string $ httpMethod ,
273
+ string $ requestUrl
274
+ ): string {
275
+ $ data = parse_url ($ requestUrl );
276
+ $ queryStringData = !isset ($ data ['query ' ]) ? [] : array_reduce (
277
+ explode ('& ' , $ data ['query ' ]),
278
+ function ($ carry , $ item ) {
279
+ list ($ key , $ value ) = explode ('= ' , $ item , 2 );
280
+ $ carry [rawurldecode ($ key )] = rawurldecode ($ value );
281
+ return $ carry ;
282
+ },
283
+ []
284
+ );
285
+
286
+ return $ this ->_httpUtility ->sign (
287
+ array_merge ($ queryStringData , $ params ),
288
+ $ signatureMethod ,
289
+ $ consumerSecret ,
290
+ $ tokenSecret ,
291
+ $ httpMethod ,
292
+ $ requestUrl
293
+ );
294
+ }
295
+
256
296
/**
257
297
* Request token endpoint.
258
298
*
@@ -313,10 +353,10 @@ public function fetchResponse(string $url, array $requestBody, array $headers, s
313
353
/**
314
354
* Builds the bearer token authorization header
315
355
*
316
- * @param string $token
356
+ * @param string|null $token
317
357
* @return array
318
358
*/
319
- public function buildBearerTokenAuthorizationHeader (string $ token ): array
359
+ public function buildBearerTokenAuthorizationHeader (? string $ token ): array
320
360
{
321
361
return [
322
362
'Authorization: Bearer ' . $ token
0 commit comments