web-dev-qa-db-fra.com

Installer WP Authentification depuis une API externe

Il existe un site non-WP existant, et j’ai besoin que leurs utilisateurs puissent se connecter à mon nouveau site Wordpress avec les mêmes informations d’identité que celles dont ils disposent déjà.

On m'a fourni un terminal (www.example-api.com/token) et des identifiants de connexion (email et mot de passe) qui donnent un jeton (et d'autres détails) comme réponse.

J'ai lu sur OAuth et la plupart de ce que je reçois sont des ressources provenant de problèmes différents (comme pour se connecter sur un site non-WP utilisant leurs comptes sur le site WP). Je n’ai pas accès à l’autre site et je vois qu’il doit être installé ici. Dois-je le rayer?

Je suis tombé par hasard sur le dépassement de wp_authenticate via un plugin personnalisé, que j’ai déjà configuré, mais je suis perplexe quant à savoir quoi et comment faire.

Un guide ou un coup de pouce pour cela?

4
Suika

Mise à jour : Création d'un article de blog pour mieux l'expliquer :)


J'ai pu le faire grâce au filtre authenticate de WP dans un nouveau plugin; dont la plupart est guidée par ce tutoriel par Ben Lobaugh. Points principaux sur le plugin:

  • Créez une fonction d’appel d’API en utilisant cURL (vous pouvez obtenir les codes guides de Postman lors des tests si vous ne le savez pas déjà).
  • Ajouter un filtre pour vérifier si la réponse de l'appel indique que l'utilisateur existe et qu'il a accès (en fonction du rôle de l'utilisateur dans mon cas).
  • Toujours en utilisant le filtre, vérifiez si l'utilisateur a déjà un compte sur le site WP - sinon, créez-en un à l'aide de wp_insert_user. Pour plus de clarté, j’ai utilisé l’e-mail et le mot de passe vérifiés par l’API car WP nécessite un utilisateur enregistré sur sa base de données.
  • Si l'utilisateur existe déjà dans la base de données WP, assurez-vous que ses informations d'identification sont identiques à l'aide de wp_update_user. Ce sont des cas comme quand ils ont changé leurs détails sur le site principal non-WP.
  • Ajoutez éventuellement une page de paramètres pour le plugin. Dans mon cas, j'ai créé un champ pour l'URL de demande en suivant ce tutoriel par Bharat Pareek.
4
Suika