@@ -46,7 +46,7 @@ public function parse_header( $header ) {
46
46
47
47
}
48
48
49
- public function get_parameters ( $ require_token = true ) {
49
+ public function get_parameters ( $ require_token = true , $ extra = array () ) {
50
50
$ params = array_merge ( $ _GET , $ _POST );
51
51
$ params = wp_unslash ( $ params );
52
52
@@ -74,6 +74,10 @@ public function get_parameters( $require_token = true ) {
74
74
$ param_names [] = 'oauth_token ' ;
75
75
}
76
76
77
+ if ( ! empty ( $ extra ) ) {
78
+ $ param_names = array_merge ( $ param_names , (array ) $ extra );
79
+ }
80
+
77
81
$ errors = array ();
78
82
$ have_one = false ;
79
83
@@ -193,7 +197,7 @@ public function dispatch( $route ) {
193
197
return $ this ->generate_request_token ( $ params );
194
198
195
199
case 'access ' :
196
- $ params = $ this ->get_parameters ();
200
+ $ params = $ this ->get_parameters ( true , array ( ' oauth_verifier ' ) );
197
201
198
202
if ( is_wp_error ( $ params ) ) {
199
203
return $ params ;
@@ -204,7 +208,8 @@ public function dispatch( $route ) {
204
208
205
209
return $ this ->generate_access_token (
206
210
$ params ['oauth_consumer_key ' ],
207
- $ params ['oauth_token ' ]
211
+ $ params ['oauth_token ' ],
212
+ $ params ['oauth_verifier ' ]
208
213
);
209
214
210
215
default :
@@ -377,7 +382,7 @@ public function get_access_token( $oauth_token ) {
377
382
* @param string $oauth_token Request token key
378
383
* @return WP_Error|array OAuth token data on success, error otherwise
379
384
*/
380
- public function generate_access_token ( $ oauth_consumer_key , $ oauth_token ) {
385
+ public function generate_access_token ( $ oauth_consumer_key , $ oauth_token, $ oauth_verifier ) {
381
386
$ token = $ this ->get_request_token ( $ oauth_token );
382
387
if ( is_wp_error ( $ token ) ) {
383
388
return $ token ;
@@ -388,6 +393,10 @@ public function generate_access_token( $oauth_consumer_key, $oauth_token ) {
388
393
return new WP_Error ( 'json_oauth1_unauthorized_token ' , __ ( 'OAuth token has not been authorized ' ), array ( 'status ' => 401 ) );
389
394
}
390
395
396
+ if ( $ oauth_verifier !== $ token ['verifier ' ] ) {
397
+ return new WP_Error ( 'json_oauth1_invalid_verifier ' , __ ( 'OAuth verifier does not match ' ), array ( 'status ' => 400 ) );
398
+ }
399
+
391
400
$ consumer = $ this ->get_consumer ( $ oauth_consumer_key );
392
401
if ( is_wp_error ( $ consumer ) ) {
393
402
return $ consumer ;
0 commit comments