@@ -195,25 +195,58 @@ public function getAccessToken(string $requestToken, string $verifier):AccessTok
195
195
throw new ProviderException ('request token mismatch ' );
196
196
}
197
197
198
- $ response = $ this ->sendAccessTokenRequest ($ verifier );
198
+ $ params = $ this ->getAccessTokenRequestHeaderParams ($ token , $ verifier );
199
+ $ response = $ this ->sendAccessTokenRequest ($ params );
199
200
200
201
return $ this ->parseTokenResponse ($ response );
201
202
}
202
203
204
+ /**
205
+ * Prepares the header params for the access token request
206
+ */
207
+ protected function getAccessTokenRequestHeaderParams (AccessToken $ requestToken , string $ verifier ):array {
208
+
209
+ $ params = [
210
+ 'oauth_consumer_key ' => $ this ->options ->key ,
211
+ 'oauth_nonce ' => $ this ->nonce (),
212
+ 'oauth_signature_method ' => 'HMAC-SHA1 ' ,
213
+ 'oauth_timestamp ' => time (),
214
+ 'oauth_token ' => $ requestToken ->accessToken ,
215
+ 'oauth_version ' => '1.0 ' ,
216
+ 'oauth_verifier ' => $ verifier ,
217
+ ];
218
+
219
+ $ params ['oauth_signature ' ] = $ this ->getSignature (
220
+ $ this ->accessTokenURL ,
221
+ $ params ,
222
+ 'POST ' ,
223
+ $ requestToken ->accessTokenSecret ,
224
+ );
225
+
226
+ return $ params ;
227
+ }
228
+
229
+ /**
230
+ * Adds the "Authorization" header to the given `RequestInterface` using the given array or parameters
231
+ */
232
+ protected function setAuthorizationHeader (RequestInterface $ request , array $ params ):RequestInterface {
233
+ return $ request ->withHeader ('Authorization ' , sprintf ('OAuth %s ' , QueryUtil::build ($ params , null , ', ' , '" ' )));
234
+ }
235
+
203
236
/**
204
237
* Sends the access token request
205
238
*
206
239
* @see \chillerlan\OAuth\Core\OAuth1Provider::getAccessToken()
207
240
*/
208
- protected function sendAccessTokenRequest (string $ verifier ):ResponseInterface {
241
+ protected function sendAccessTokenRequest (array $ headerParams ):ResponseInterface {
209
242
210
243
$ request = $ this ->requestFactory
211
- ->createRequest ('POST ' , QueryUtil:: merge ( $ this ->accessTokenURL , [ ' oauth_verifier ' => $ verifier ]) )
244
+ ->createRequest ('POST ' , $ this ->accessTokenURL )
212
245
->withHeader ('Accept-Encoding ' , 'identity ' )
213
246
->withHeader ('Content-Length ' , '0 ' )
214
247
;
215
248
216
- $ request = $ this ->getRequestAuthorization ($ request );
249
+ $ request = $ this ->setAuthorizationHeader ($ request, $ headerParams );
217
250
218
251
return $ this ->http ->sendRequest ($ request );
219
252
}
@@ -245,7 +278,7 @@ public function getRequestAuthorization(RequestInterface $request, AccessToken|n
245
278
$ token ->accessTokenSecret ,
246
279
);
247
280
248
- return $ request -> withHeader ( ' Authorization ' , sprintf ( ' OAuth %s ' , QueryUtil:: build ( $ params, null , ' , ' , ' " ' )) );
281
+ return $ this -> setAuthorizationHeader ( $ request , $ params );
249
282
}
250
283
251
284
}
0 commit comments