Conclusion

Conclusion

Rappel de mon objectif : exécuter des requêtes SQL préprogrammées et paramètrées sur ma base de données Woocommerce.

L’API REST Woocommerce ne permet pas de réaliser ce que je veux.

L’API REST WordPress est la solution, encore faut-il protéger les Endpoints (URL auxquelles j’accède).

Pour ce résumé de conclusion, j’utilise deux sites : un distant (www.hegetique.com) et un local (le client qui accèdera au distant).

Ma source principale pour apprendre l’API est cet article très intéressant : https://blog.datafeedr.com/using-oauth-1-0-wordpress-api-custom-endpoints/ (datafeedr)

J’ai expliqué dans mon article précédent comment réaliser toutes les étapes avec deux sites locaux. Entre un local et un distant il n’y a aucune différence mais je profite de cet article pour répéter toutes les étapes.

1 – vérification que l’API REST est activée

http://www.hegetique.com/wp-json

Comme on peut le constater, c’est le cas :

  • « namespaces« :[
    1. « oembed\/1.0 »,
    2. « jb\/v1 »,
    3. « yoast\/v1 »,
    4. « wp\/v2 »

    ],

wp\/v2 prouve l’existence de l’API REST. Ma version de WordPress est la 4.7.2–fr_FR.

L’API y est active apr défaut.

2 – Add the following code to your plugin on your client site

J’utilise donc deux sites :

et

J’ai créé le plugin jb_test_bs4 et je l’ai activé (test_api_connection.php)

<!–?php
/**
* Test connection to API without any authentication headers.
*/
add_shortcode( ‘test_api_connection’, ‘my_test_api_connection’ );
function my_test_api_connection() {
$url = ‘http://www.hegetique.com/wp-json&rsquo;;
$response = wp_remote_get( $url );
$api_response = json_decode( wp_remote_retrieve_body( $response ), true );
return print_r( $api_response, true ) ;
}

J’ai créé la page de test http://localhost:8888/bs4/test-1/

Je crée le shortcode [test_api_connection] tel qu’indiqué.

Lorsque je lance la page http://localhost:8888/bs4/test-1/ j’obtiens bien ce que j’ai présenté au § 1.

3 – Now go to your main API site and install and activate the WordPress REST API – OAuth 1.0a Server plugin

J’installe le plugin WP REST API sur hegetique

je crée l’application Client Api Connection

Client Key 6r9E762fTrKg
Client Secret hs2xfeBw9NdMFNWji9Jk9ARcmrwfYgdBvarII944fvUnOu6x

4 – Open the Postman app

Je suis toutes les étapes, comme indiqué et vu dans mes articles précédent :

A – http://www.hegetique.com/oauth1/request

J’obtiens oauth_token=D1Bi03SJwEhXw8hHbSqT7HF7&oauth_token_secret=tEUed5FopIzuBWPZYLFenPykZkRqzA7qlIpv6MjWrD741tfu&oauth_callback_confirmed=true

B – http://www.hegetique.com/oauth1/authorize

Après m’être contesté avec l’utilisateur bidon et après avoir accepté l’application, j’obtiens : Your verification token is cpNhn0scXeURzqUGnl25fS6J

C – http://www.hegetique.com/oauth1/access?oauth_verifier=cpNhn0scXeURzqUGnl25fS6J

J’obtiens : oauth_token=WDPjBWiUgNFpWC6TM17x2Rjc&oauth_token_secret=HMuP4oI212FDIpR4GIGSTsVvRwPoIDoF4UV3XBP1IbKlKhgx

OK, we are done with Postman

Je n’ai désormais plus besoin que de oauth_token=WDPjBWiUgNFpWC6TM17x2Rjc&oauth_token_secret=HMuP4oI212FDIpR4GIGSTsVvRwPoIDoF4UV3XBP1IbKlKhgx et Client Key et Client Secret

On your main API site, install the Disable Rest API plugin

J’obtiens bien ce qui est indiqué :

 => rest_cannot_access

J'ajoute les lignes de code de OAuth_Authorization_Header.php à mon fichier header.php, plugin jb_test_bs4

So now when you load the page with your shortcodes on your client site, you should have one ‘access denied’ message and one with a successful response.

First, disable the Disable REST API plugin

Tout se passe bien comme indiqué. Je désactive le plugin cité.

myapiplugin

Je crée, j'installe et j'active myapiplugin sur hegetique.com comme indiqué.

Je me connecte avec l'utilisateur bidon en local.

J'appelle la page : http://localhost:8888/bs4/test-1/

et j'obtiens :

test_api_connection

Array
(
     => rest_forbidden
    [message] => Désolé, vous n’avez pas l’autorisation de faire cela.
    [data] => Array
        (
            [status] => 403
        )

)

test_api_oauth_connection

Array
(
    [greeting] => Hello!
    [message] => You have successfully called my custom endpoint.
)

Ce qui est exactement ce que je voulais !

Il suffit désormais de remplacer myapiplugin par le plugin que je souhaite et d'appeler l'URL dans mon logiciel Python.

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s