2017-07-28 98 views
0

我正在用WP API REST和WC API REST創建angularjs客戶端,而且我已經在發佈數據到訂單時遇到了問題。我得到401錯誤未經授權。有人能告訴我我做錯了什麼嗎?WC API REST無法POST數據oauth 1.0

angular.module('egonometriaApp') 


.service('$order', ['$http', function ($http) { 
    var order={ 
     payment_method: 'bacs' 
    }; 
    function randomString(length, chars) { 
     var result = ''; 
     for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; 
     return result; 
    } 

var consumer_key = "ck_ae3c4951e083094b8ae716c3b8b59eac4a35515b", 
    httpMethod = "POST", 
    url = "http://it-grafika.pl:8080/wp-json/wc/v2/orders", 
    parameters = { 
    oauth_consumer_key: consumer_key, 
    oauth_signature_method: "HMAC-SHA1", 
    oauth_timestamp: (Math.floor((new Date().getTime())/1000)).toString(), 
    oauth_nonce: randomString(32, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 
    }, 
    consumerSecret = "cs_00af1fb1fa20bcf81d3c68dc8cfea4f3b9f261e9", 
    tokenSecret = "", 
    encodedSignature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret, 
    {encodeSignature: true}); 
console.log(encodedSignature); 
parameters['oauth_signature'] = encodedSignature; 
console.log(parameters); 
this.postOrder = function() { 
    var config = { 
    method: httpMethod, 
    url: url, 
    headers: { 
     authorization: 'OAuth '+ 'oauth_consumer_key="'+parameters['oauth_consumer_key']+'",oauth_signature_method="'+parameters['oauth_signature_method']+ 
     '",oauth_timestamp="'+parameters['oauth_timestamp']+'",oauth_nonce="'+parameters['oauth_nonce']+'",oauth_version="1.0"'+',oauth_signature="'+parameters['oauth_signature']+'"', 
     "Content-Type": 'Content-Type: application/json' 
    } 

    // data: order 
    }; 
    $http(config) 
    .then(function (status) { 
     console.log(status); 
    }); 
}; 

}]) ;

它正在工作,當我使用郵遞員。不知道爲什麼授權不通過。

這是我得到我的瀏覽器 http://imgur.com/a/bEMC8

回答

0

既然你正在跨域請求,您需要通過withCredentials在你的配置true

你的配置應該看起來像這樣。

var config = { 
    "async": true, 
    "crossDomain": true, 
    method: httpMethod, 
    url: url, 
    withCredentials : true, 
    headers: { 
     authorization: 'OAuth '+ 'oauth_consumer_key="'+parameters['oauth_consumer_key']+'",oauth_signature_method="'+parameters['oauth_signature_method']+ 
     '",oauth_timestamp="'+parameters['oauth_timestamp']+'",oauth_nonce="'+parameters['oauth_nonce']+'",oauth_version="1.0"'+',oauth_signature="'+parameters['oauth_signature']+'"', 
     "Content-Type": 'Content-Type: application/json' 
    } 

詳情請參閱https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials

+0

這沒有幫助 – Tomek