web-dev-qa-db-fra.com

Créer un message avec REST API en php avec file_get_contents

En fait, je n'ai aucun problème à recevoir des publications. J'ai besoin de créer des publications avec l'API REST en PHP avec file_get_contents.

Ceci est mon code:

json_decode(
    file_get_contents(
        "http://my-site.com/wp-json/wp/v2/posts",
        false,
        stream_context_create(
            array(
                "http" => array(
                    "header"  => "Content-type: text/json\r\n",
                    "method"  => "POST",
                    "content" => json_encode(
                        array(
                            "slug" => "article-2",
                            "title" => "Article 2",
                            "content" => "Created with rest api",
                        )
                    )
                ),
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false
                )
            )
        )
    ),
    true
);

Et je reçois cette erreur: failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized

J'ai donc essayé d'avoir une authentification avec un nom d'utilisateur et un mot de passe wp réels:

"http" => array(
    "header"  => "Content-type: text/json\r\n"."Authorization: Basic " . base64_encode("$username:$password"),
    "method"  => "POST",
    "content" => json_encode(
        array(
            "slug" => "article-2",
            "title" => "Article 2",
            "content" => "Created with rest api",
        )
    )
)

Mais même résultat.

Comment puis-je insérer un message avec l'API REST de php en utilisant file_get_contents?

2
Mattia Merlini

Vous aurez besoin d'installer un plugin pour ajouter une authentification. Par défaut, il nécessite un cookie et un jeton nonce, mais pour les applications CLI ou les demandes PHP, vous souhaiterez installer un plugin auth de base ou utiliser OAuth1./2

2
Tom J Nowell