2017-12-14 6 views
0

まず、この点を確認して助けてください。 2つ目は、(1)サーバーサイドのXHRを使用するラズベリーパイノードアプリケーションと、(2)Oauth 2.0を使用したRuby APIの2つのアプリケーション間での認証シナリオに関係する状況があります。Ouath2 401エラー:要求に必須のパラメータがないか、サポートされていないパラメータ値が含まれているか、それ以外の場合は不正な形式です。

Rubyエンドポイントではいくつかの問題がありましたが、安定しているようです。私たちがPOSTMANと私たちのRaspberry Piから(うまくいけば)正しく認証できるように。私は私のカスタムロガーを使用して、次の例外を取得しています、という試みにおいて

NEW EXCEPTION - Thu Dec 14 2017 00:23:20 GMT-0800 (Pacific Standard Time) - Failed RESTful Async POST failed: 4 401 {"UNSENT":0,"OPENED":1,"HEADERS_RECEIVED":2,"LOADING":3,"DONE":4,"readyState":4,"responseText":"{\"error\":\"invalid_request\",\"error_description\":\"The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.\"}","responseXML":"","status":401,"statusText":null,"withCredentials":true}! 

ここで(編集済み)経由で送信されるデータです:

POSTMAN POST下記のザ・が動作しない
NEW ENTRY - Thu Dec 14 2017 00:23:19 GMT-0800 (Pacific Standard Time) - REST POST for: http://cms.....ca/oauth/token with body: {"client_id":"...9","client_secret":"......","audience":"....ca","scope":"client admin","grant_type":"password","username":"[email protected]","password":"qqqqqqq"} 

(編集済み):

enter image description here

POSTは怒っています私は(それがのOAuth2のために他のサイト上で動作し、現在は他の場所で認証するために取り組んでいるので)が、私はクリアするうえで何かアドバイスをいただければと思います、これは私のコードであるとは考えていない

headerAsyncPost: (url, data, headerKey, headerValue) => { 
     if (c.jobLogging()) l.log(`REST POST for ${url} with body: ${JSON.stringify(data)} ${headerKey} ${headerValue}`, 1); 
     return new Promise((res, rej) => { 
      try { 
       let r = new XMLHttpRequest(); 
       s.xhrReady(url, r, 'Success', 'RESTful Async POST failed', res, rej); 
       r.open("POST", url, true); 
       r.setRequestHeader("content-type", "application/json"); 
       r.setRequestHeader(headerKey, headerValue); 
       r.send(JSON.stringify(data)); 
      } catch (ex) { 
       l.err(`Exception ${ex}`); 
      } 
     }); 
    }, 

:電子パイ側を通ってこれがPi側であろうとRuby側であろうと、私が作ることができる何かの修正であろうと。正直なところ、私はむしろ、より軽量で洗練されたRubyの実装を使用したいと思います。ありがとう!

答えて

0

問題が解決された - エンドポイントがURLに付加ボディだけのパラメータでJSON POSTをサポートすることはできません。

testPost: (url, params, headerKey, headerValue) => { 
     return new Promise((res, rej) => { 
      try { 
       let r = new XMLHttpRequest(); 

       for (let i = 0; i < Object.keys(params).length; i++) { 
        if (i === 0) url += `?`; 
        url += `${Object.keys(params)[i]}=${params[Object.keys(params)[i]]}`; 
        if (i < Object.keys(params).length - 1) url += `&`; 
       } 
       l.log(`${url}`, 1); 
       s.xhrReady(url, r, 'Success', 'RESTful Async TestPOST failed', res, rej); 
       r.open("POST", url, true); 
       r.setRequestHeader(headerKey, headerValue); 
       r.send(); 
      } catch (ex) { 
       l.err(`Exception ${ex}`); 
      } 
     }) 
    }, 
関連する問題