2015-12-18 24 views
36

我有WordPress rest APIWordPress OAuth server setup plugins設置,我試圖在每次通話內容沒有給我OAuth令牌或OAuth的祕密,我需要時間使用http://sevengoslings.net/~fangel/oauth-explorer/ 進行身份驗證。WordPress的休息API的OAuth捲曲命令

我嘗試了這些步驟 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) 

點擊Get Request Token和你通話內容

我應該在呼叫內容

Call content now = 

oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true 

得到這個,但我只得到這個

page not found 

在這裏,他們無法使三腳OAuth1.0a工作,因此他們使用的基本OAuth需要另一個插件,因此不推薦用於生產。

我應該使用不同的簽名方法嗎?

我正在尋找兩個curl命令從服務器獲取OAuth授權,另一個將此授權交易爲訪問令牌+刷新令牌。

+1

你能提供一些你已經試過的代碼示例嗎?您的OAuth設置是否接受POST請求?您的設置是否可供其他人試用? – dafyk

回答

4

我有這個工作,我會概述我是如何做到這一點。

我正在使用Postman application來測試和完善API調用。我強烈建議使用這個。一旦你打電話工作,你可以導出到PHP Curl(或任何你需要的)。

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

對你有麻煩,我有以下設置

首先第一次調用,我確信我的終點網址是:

{{url}}/oauth1/request 

設置我的API呼叫PUSH和我的AuthType到OAuth 1.0

我添加了我的consumer_key和consumer_sec ret我在WP後端>用戶>應用程序中創建的(這是隨OAuth插件一起添加的)。

簽名方法 - HSAC-SHA1

然後郵差會更新這個並動態創建隨機數,時間戳和版本。

設置我的境界爲「樣本」

那麼我確信,我啓用的選項: - 添加PARAMS到頭 - 空PARAMS加入簽名

這裏是爲我的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" 

這爲我提供了以下的輸出:

oauth_token=xbTb4E93K6pP2tcg4qGJIYgl&oauth_token_secret=qWo01WL2ish205yvjiU8qyCkKVPMNUvSbKpFBB1T1oOuOtBc&oauth_callback_confirmed=true 

我可以用郵差這個API調用導出到捲曲功能如果是這樣,我得到以下幾點:

$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; 


} 

這是OAuth認證需要3個步驟的第1步。我剛開始我的旅程,將他們連接起來。沒有太多的文檔,沒有太多的例子。

步驟2看起來像使用提供的令牌和祕密調用/ oauth1/authorize。這看起來像它然後需要用戶登錄和一個新的(和永久)令牌和祕密創建。

第3步看起來像一個呼叫/您好!OAuth1 /接入

我還沒有成功地得到了第2步和第3步正確連接在一起,但我想我應該張貼,以幫助有關原始查詢第一步不會返回正確的令牌

This article是解釋如何使用WP-API和OAuth的更好的解決方案之一。