2017-07-28 10 views
0

私はWP API RESTとWC API RESTでangularjsクライアントを作成しています。オーダーへのPOSTデータに問題があります。私は不正な401エラーを取得します。誰かが私が間違っていることを教えてもらえますか?WC API RESTはデータoauth 1.0をPOSTできません。

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); 
    }); 
}; 

}]) ;

私はPostmanを使用しているときに動作しています。なぜ認可が通過していないのか分かりません。

これあなたがクロスドメインリクエストを作っているので、私は私のブラウザ http://imgur.com/a/bEMC8

答えて

0

で得るものは、あなたの設定にtrueようwithCredentialsを渡す必要があります。

設定は次のようになります。

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

関連する問題