2015-12-18 11 views
36

Ho la messa a punto WordPress rest API e WordPress OAuth server setup plugins e sto cercando di autenticare usando http://sevengoslings.net/~fangel/oauth-explorer/ ogni volta che il contenuto di chiamata non mi sta dando il segreto del token o OAuth OAuth che ho bisogno.WordPress resto API OAuth ricciolo

ho provato questi passaggi https://wordpress.org/support/topic/json-rest-api-from-mobile-app-with-authentication

1. Enter base url (http(s)://your.domain.com/oauth1 
2. Access token = request 
3. Authorize = authorize 
4. Access_Token = access 
5. Enter your consumer key and secret (leave method as HMAC-SHA1) 

Clicca Get Request Token e si ottiene Chiamami contenuti

dovrei ottenere questo in Call Content

Call content now = 

oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true 

Ma ho solo questo

page not found 

Qui non erano in grado di ottenere OAuth1 .0a a 3 vie per funzionare, quindi hanno utilizzato OAuth di base che richiede un altro plug-in e non è consigliato per la produzione.

Devo utilizzare un metodo di firma diverso?

Sto cercando due comandi di arricciatura per ottenere una sovvenzione OAuth dal server e un'altra per scambiare questa concessione per un token di accesso + token di aggiornamento.

+1

Puoi fornire alcuni esempi di codice che hai già provato? La tua configurazione OAuth accetta le richieste POST? La tua configurazione è accessibile da altri per provare? – dafyk

risposta

4

Ho ottenuto questo risultato e illustrerò come l'ho fatto.

Sto utilizzando il Postman application per testare e perfezionare le chiamate API. Consiglio vivamente di usare questo. Una volta che hai funzionato, puoi esportare in PHP Curl (o qualsiasi altra cosa tu abbia bisogno).

If you use Postman you can view my API calls using this shared link.

Per la Prima chiamata si hanno problemi con Ho le seguenti impostazioni

primo luogo, ho fatto in modo mio URL endpoint era:

{{url}}/oauth1/request 

ho impostato il mio API Chiama a PUSH e my AuthType a OAuth 1.0

Ho aggiunto il mio consumer_key e consumer_sec Ret che ho creato nel Backend WP> Utenti> Applicazioni (questo viene aggiunto con il plugin OAuth).

firma del metodo - HSAC-SHA1

Poi postino aggiornerà questo e dinamicamente creare il Nonce, timestamp e versione.

ho impostato il mio regno come 'Esempio'

ho poi fatto in modo che ho attivato le opzioni: - Aggiungi Parametri di intestazione - Aggiungi params vuoti a firma

Ecco ciò che ho per il mio params:

realm="Example",oauth_consumer_key="AdPuqyWrAQQc",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1470248765",oauth_nonce="dnOTvG",oauth_version="1.0",oauth_signature="gUahTX2hfV1lqZCfMUvHtLLoauI%3D" 

Questo mi dà il seguente risultato:

oauth_token=xbTb4E93K6pP2tcg4qGJIYgl&oauth_token_secret=qWo01WL2ish205yvjiU8qyCkKVPMNUvSbKpFBB1T1oOuOtBc&oauth_callback_confirmed=true 

posso usare postino esportare questa chiamata API a una funzione cURL e se così ottengo il seguente:

$curl = curl_init(); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://mydomain.dev/oauth1/request", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_consumer_key\"\r\n\r\nAdPuqyWrAQQc\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_token\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature_method\"\r\n\r\nHMAC-SHA1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_timestamp\"\r\n\r\n1470241356\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_nonce\"\r\n\r\n7VKp4N\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_version\"\r\n\r\n1.0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature\"\r\n\r\n9qRrIkDxt56S9Ikf061eFOVLAdA%3D\r\n-----011000010111000001101001--", 
    CURLOPT_HTTPHEADER => array(
    "authorization: OAuth realm=\"Example\",oauth_consumer_key=\"AdPuqyWrAQQc\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1470248765\",oauth_nonce=\"dnOTvG\",oauth_version=\"1.0\",oauth_signature=\"gUahTX2hfV1lqZCfMUvHtLLoauI%3D\"", 
    "cache-control: no-cache", 
    "content-type: multipart/form-data; boundary=---011000010111000001101001", 
    "postman-token: dd85258e-a72a-b731-82d1-00109e30962f" 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo 'response ' . $response; 

    $a = parse_str($response); 

    echo 'token ' . $oauth_token; 
    echo '<br>'; 
    echo 'secret '. $oauth_token_secret; 


} 

Questo passaggio 1 di 3 fasi per l'autenticazione OAuth. Sto appena iniziando il mio viaggio per connetterli tutti. Non c'è molta documentazione là fuori e non molti esempi.

Il passaggio 2 si presenta come una chiamata a/oauth1/autorizzazione con il token e il segreto forniti. Sembra che richieda un login utente e un nuovo token (e permenant) e il segreto sia creato.

Fase 3 si presenta come una chiamata a/OAuth1/accesso

non ho avuto successo passaggi 2 e 3 per collegare tra loro in modo corretto, ma ho pensato di inviare per aiutare con la query originale sulla primo passo non restituire i gettoni corretti

This article è uno dei migliori là fuori spiegano come utilizzare WP-API e OAuth.