Je pense que je ne suis pas loin de tout avoir mais il y a encore du travail. Heureusement, j’ai trouvé un article très intéressant : https://blog.datafeedr.com/using-oauth-1-0-wordpress-api-custom-endpoints/ (datafeedr)
C’est un très long article ! mais j’ai déjà couvert une grande partie (la moitié) avec mes articles précédents.
Tout d’abord j’ajoute (en local) le plugin que j’ai créé dans les articles précédents.
http://localhost:8888/jbs/wp-json retourne :
- « namespaces« :[
- « oembed\/1.0 »,
- « jb\/v1 »,
- « wp\/v2 »
],
Il est bien là : jb/v1
Maintenant suivons pas à pas le tutoriel. Comme il n’y a pas de § dans l’article datafeedr, repérez les phrases correspondant mes titres dans son document
Add the following code to your plugin on your client site
Tout d’abord, bien noter que l’auteur utilise 2 sites locaux (ce que je n’avais pas remarqué au départ).
- http://wp-api-main/ (qui sera pour moi) http://localhost:8888/jbs/
et
- http://wp-api-client/ (qui sera pour moi) http://localhost:8888/bs4
J’ai créé le plugin jb_test_bs4 et je l’ai activé (test_api_connection.php)
J’ai créé la page de test http://localhost:8888/bs4/test-1/
Je crée le shortcode [test_api_connection] tel qu’indiqué.
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 jbs
je crée l’application Client Api Connection
Client Key | 3nfqy2SBNPi1 |
---|---|
Client Secret | FXj9PNhb39QidB8QGE87p9e3P33j7l4d91OeQGduNnqr74O8 |
Open the Postman app
Je suis toutes les étapes, comme indiqué et vu dans mes articles précédent.
OK, we are done with Postman
On your main API site, install the Disable Rest API plugin
J’obtiens bien ce qui est indiqué.
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.
Perfect! Now, let’s make that new endpoint private so only authenticated clients can access it.
Remplacement de header.php (jbs) avec private-custom-endpoint.php
Et là,… ça ne marche pas… pour l’instant.
Si je remplace update_core par read, ça marche ! mais ce n’est pas ce que je veux.
https://codex.wordpress.org/Roles_and_Capabilities
Je change les droits d’utilisateur à l’utilisateur pourletest, et là ca marche.