J'utilise le ci-dessous dans mon wordpress pour développer une application basée sur Oauth.
WP-API (plugin générateur d'api)
WP API OAuth1 (serveur d'authentification) et
WP API client-cli (bibliothèque client oauth)
à l'adresse ci-dessous correspond au wp client-cli https://man-sudarshann-1.c9.io/api/
Je reçois cette erreur La signature OAuth ne correspond pas lorsque je clique sur le bouton AUTH pour authentifier la demande. J'ai essayé tout le fixe pour cela sur Internet. mais aucun n'a aidé
la signature générée et envoyée par le client api est 3ko8DUsUUEB4Hqaks68vGYnTjQM =
la signature générée côté serveur est 5rPsul6zplhfNvb4o + Mz11O/OyI =
donc le code ci-dessous échoue
if ( ! hash_equals( $signature, $consumer_signature ) ) {
return new WP_Error( 'json_oauth1_signature_mismatch', __( 'OAuth signature does not match' ), array( 'status' => 401 ) );
}
Je suppose que la console de l'API génère une mauvaise signature. S'il vous plaît, aidez-moi à résoudre ce problème.
J'étais confronté à un problème similaire lorsque j'essayais d'utiliser Client-CLI avec le plug-in OAuth 1.0a, mais j'ai trouvé une solution ici sur le référentiel officiel.
Dans le fichier lib/class-wp-json-authentication-oauth1.php
de la ligne 524
, modifiez le code suivant:
$base_request_uri = rawurlencode( get_home_url( null, parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ), 'http' ) );
à:
$home_url_path = parse_url(get_home_url (null,'','http'), PHP_URL_PATH );
$request_uri_path = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
if (substr($request_uri_path, 0, strlen($home_url_path)) == $home_url_path) {
$request_uri_path = substr($request_uri_path, strlen($home_url_path));
}
$base_request_uri = rawurlencode( get_home_url( null, $request_uri_path, 'http' ) );
Cela devrait résoudre le problème auquel vous êtes confronté.
Assurez-vous que la demande de signature est traitée correctement: http://oauth1.wp-api.org/docs/basics/Signing.html
Si vous utilisez POSTMAN, vous pouvez le définir sur OAuth 1.0 sous Autorisation, puis sélectionner les options.
Voici un tutoriel détaillé sur l’utilisation de OAuth 1 et de Postman avec WordPress: https://wordpress.stackexchange.com/a/239873/51201
Dans Postman, sous Autorisation essayez de désélectionner " Ajouter des paramètres à l'entête ".
vérifiez votre expédition baseurl. Dans mon cas, le non-www a été transmis à www. Après avoir mis à jour le format baseurl au format www.example.com, cela a fonctionné pour moi.