Error when trying to update a Wordpress post using the WP REST API plugin

Asked

Viewed 1,350 times

1

Hello, I’m new with Wordpress and need (for yesterday) solve this problem. Help!

I’m creating a simple Angular 2 (V6+) integration that accesses the plugin-generated api WP REST API and the json I am sending is with the following data:

{
   "date":"2018-09-09T17:13:50",
   "date_gmt":"2018-09-09T17:13:50",
   "slug":"4-duvidas-respondidas-sobre-presenca-digital",
   "status":"publish",
   "password":null,
   "title":"4 dúvidas respondidas sobre presença digital",
   "content":"<p>Search Engine Optimization (SEO), Inbound Marketing, Google Ads, site responsivo… Todos esses termos são conceitos comuns no universo do marketing digital. No entanto, médicos que buscam inovar a sua forma de captar novos pacientes por meio da internet podem encontrar dificuldades para compreender o que tais nomenclaturas representam – assim como o termo “nevos” pode gerar estranhamento em profissionais de comunicação digital.</p>\n<p>Neste artigo, levantamos as principais dúvidas apontadas por nossos clientes com relação à presença digital de profissionais de saúde. Iremos falar para aqueles que já têm atuado de alguma forma na internet, com o objetivo de gerar mais oportunidades para a clínica ou consultório médico.</p>\n<p>Caso você ainda não use a internet com esse fim, mas tem planos de iniciar a sua presença digital, este artigo também será importante para clarear possíveis sombras que possam prejudicar a sua atuação em <a class=\"aalmanual\" title=\"\" href=\"http://blog.imedicina.com.br/marketing-medico\" target=\"_self\">marketing médico</a>. Vamos lá!</p>\n",
   "author":1,
   "excerpt":"<p>Search Engine Optimization (SEO), Inbound Marketing, Google Ads, site responsivo… Todos esses termos são conceitos comuns no universo do marketing digital. No entanto, médicos que buscam inovar a sua forma de captar novos pacientes por meio da internet podem encontrar dificuldades para compreender o que tais nomenclaturas representam – assim como o termo “nevos” pode &hellip; </p>\n<p class=\"link-more\"><a href=\"http://localhost/imedicina-test/2018/09/09/4-duvidas-respondidas-sobre-presenca-digital/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;4 dúvidas respondidas sobre presença digital&#8221;</span></a></p>\n",
   "comment_status":"open",
   "format":"standard",
   "meta":[],
   "sticky":false,
   "template":"",
   "categories":[1],
   "tags":[],
   "liveblog_likes":0
}

In the header I am correctly sending the Header below:

{ 
    header : {
        Authorization: " o token aqui "
    }
}

But when I send to the route as per the api I get the message below:

{
    code: "rest_cannot_edit", 
    message: "Sorry, you are not allowed to edit this post.", 
    data: {
        status: 401
    }
}

How can I get update the post from outside Wordpress using Angular 2 (V6+)

  • by Postman or similar technology works?

  • By what I’ve researched the most common problems are: (1) the user not having permission edit_posts and (2) the server (Apache, Nginx, etc...) take out the header Authorization.

  • found the problem, from what @Eduardovargas said that I arrived at the solution

1 answer

2

I found the problem. When I read the documentation again the first time I was not paying attention to the details and it says that to be able to do all the processes the WP REST API plugin API depends on the WP API Basic Auth plugin and I had not installed it. Using the plugin I can send a header like this:

public usuario = { login: 'admin', senha : '@teste12345' };

public updatePost(post) {

    let token = btoa(this.usuario.login + ':' + this.usuario.senha);

    let header = { 
        header : {
            Authorization: "Basic " + token;
        }
    }

    // resto da implementação aqui

}

My biggest problem is that I was using a plugin called jwt-Authentication-for-wp-Rest-api and thought that the token that should be sent there was what it returned.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.