Andiamo passo dopo passo qui. Sembra che tu stia cercando di utilizzare OAuth solo per l'autenticazione, ma prima di poterlo fare devi ottenere il token di accesso che verrà utilizzato per autenticare quando effettui le chiamate API.
Poiché utilizza OAuth versione 1, per ottenere il token di accesso è necessario effettuare le seguenti operazioni:
- Innanzitutto, imposta un'applicazione, effettua una chiamata al sito per ottenere il token di richiesta (credenziali temporanee) utilizzando l'ID client e il segreto per l'applicazione
- In secondo luogo, effettuare una chiamata al sito per autorizzare l'applicazione con il token di richiesta dal primo passaggio (rivolto verso l'utente, vedere di seguito).
- In terzo luogo, dopo che l'autorizzazione è stata completata, si effettua quindi una chiamata al sito per ottenere il token di accesso (ora che l'applicazione è stata autorizzata)
Consiglio di usare Postman per i primi passi, perché devono essere completati una sola volta. Postman gestirà anche la generazione di timestamp
, nonce
e oauth signature
quindi, se non stai usando una libreria OAuth, allora dovresti assolutamente usare Postman. Una volta ottenuto il token di accesso, è possibile effettuare chiamate tramite CURL senza librerie.
https://www.getpostman.com/
Primo passo (applicazione di installazione)
Installa il plugin WP OAuth 1, attiva, quindi vai alla voce di menu in Utenti> Applicazioni . Aggiungi nuova applicazione, compila il nome e la descrizione. Per richiamare l'URL a cui reindirizzare l'utente (dopo l'autorizzazione) o oop
per il flusso fuori banda che reindirizzerà a una pagina interna che visualizza il token del verificatore (anziché reindirizzare).
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
Per procedere al secondo passaggio, è necessario effettuare una chiamata al proprio sito, utilizzando l' ID client e il segreto client dall'applicazione creata, per ottenere credenziali temporanee (token richiesta).
Apri Postman, crea una nuova chiamata a http://website.com/oauth1/request
, fai clic sulla scheda Autorizzazione, seleziona OAuth 1.0 dal menu a discesa, inserisci la chiave client, il segreto client, imposta il metodo di firma su HMAC-SHA1
, abilita aggiungi parametri all'intestazione, codifica la firma oauth , quindi fai clic su Richiesta di aggiornamento
Postman genererà automaticamente la firma, il nonce e il timestamp per te e li aggiungerà all'intestazione (puoi visualizzare nella scheda Intestazioni).
Fai clic su Invia e dovresti ottenere una risposta che include oauth_token
e oauth_token_secret
:
Questi valori verranno utilizzati nel passaggio successivo per autorizzare l'applicazione con l'account utente di WordPress.
Secondo passo (autorizzare l'applicazione)
Il passaggio di autorizzazione deve essere completato solo una volta, questo passaggio è rivolto all'utente e quello che tutti conoscono. Questo passaggio è necessario perché stai utilizzando OAuth1 e l'applicazione deve essere associata a un account utente WordPress. Pensa a quando un sito ti consente di accedere con Facebook ... ti indirizzano a Facebook dove accedi e fai clic su "Autorizza" ... questo deve essere fatto, solo attraverso il tuo sito WordPress.
Ti consiglio di utilizzare il tuo browser Web per questo passaggio, poiché puoi semplicemente impostare le variabili nell'URL e questo fornisce la pagina "Autorizza" per autorizzare l'applicazione.
Apri il tuo browser web e digita l'URL del tuo sito, in questo modo:
http://website.com/oauth1/authorize
Ora aggiungi questo URL, oauth_consumer_key
(ID client) oauth_token
e oauth_token_secret
(dal passaggio precedente). Nel mio esempio questo è l'URL completo:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
Dopo aver fatto clic su Autorizza, verrà visualizzata un'altra schermata con il token di verifica. Nel mio esempio questo è il token di verifica restituitoE0JnxjjYxc32fMr2AF0uWsZm
Terzo passaggio (ottieni il token di accesso)
Ora che abbiamo autorizzato l'applicazione, è necessario effettuare un'ultima chiamata per ottenere il token di autorizzazione che verrà utilizzato per effettuare tutte le chiamate API. Proprio come il primo passo che userò Postman (perché la firma deve essere HMAC-SHA1) e rende 100 volte più facile completare questi passaggi.
Apri di nuovo Postman e modifica l'URL in http://website.com/oauth1/access
Assicurati di aggiungere il token e il token segreto (valori dal primo passaggio), quindi fai clic su Params per mostrare le caselle sotto l'URL. A sinistra digita oauth_verifier e a destra, inserisci il codice dal secondo passaggio, il token di verifica
Assicurati di fare clic su Richiesta di aggiornamento, quindi fai clic su Invia e dovresti ottenere una risposta con oauth_token
e oauth_token_secret
... questo è ciò di cui hai bisogno per effettuare le tue chiamate API! Scarta quelli originali dal passaggio 1, salvali nel tuo codice o in un altro posto sicuro.
È quindi possibile effettuare una chiamata API al sito, impostando le intestazioni con il token restituito e il token segreto.
Puoi passare questo in diversi modi, tramite l'intestazione di autorizzazione, nei parametri GET o POST (se codificato come application / x-www-form-urlencoded). Tieni presente che DEVI passare la firma, il timestamp e il nonce. Non avevo capito quanto tempo ci sarebbe voluta questa risposta, quindi lo aggiornerò domani con un esempio di come farlo con il tuo codice.
Consiglio vivamente di installare il registro API Rest in modo da poter visualizzare il registro delle chiamate API e vedere cosa è stato inviato, restituito, ecc. Ciò contribuirà enormemente al debug.
https://github.com/petenelson/wp-rest-api-log