2016-12-19 24 views
0

私はurlFetchAppを使用してPOSTリクエストを送るためにGoogleのシートから試しています。GoogleのスクリプトでPOST要求が完了していません

私は以下のコードを書いていますが、動作させることができます。このスクリプトを実行するたびに、次のエラーが表示されます。「コード」:400、「メッセージ」:「不正な要求:不完全なトークン要求」私はPOSTMANから同じ要求を実行すると、私は成功した答えがあるので、私は理解しません。フライドクライアントidでは、私は "/"と "+"のような特殊文字を持っていて、client_secret "!"では、おそらくそこから来るでしょうか?

ありがとうございました!

---- GSheetsスクリプト-----

function DX_API_request() { 
    var payload = { 
    'grant_type': 'client_credentials', 
    'client_id': 'name/[email protected]', 
    'client_secret': 'XXX!' 
    }; 
    var options = { 
    'method' : 'POST', 
    'Accept': 'application/json', 
    'payload' : JSON.stringify(payload), 
    'muteHttpExceptions': true 
    }; 
    Logger.log(JSON.stringify(payload)); 
    var test = UrlFetchApp.getRequest('https ://dx-example.com/admin/v100/api/oauth/token', options); 
    Logger.log(test); 
    var resquest_bearer = UrlFetchApp.fetch('https ://dx-example.com/admin/v100/api/oauth/token',options); 
    Logger.log(resquest_bearer); 
    var dataAll = JSON.parse(resquest_bearer.getContentText()); 
    Logger.log(dataAll.message); 
} 

-----ポストマンでcurlコマンド-------

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -H "Postman-Token: 655d9932-4681-f23d-6caf-5fcf63c10b82" -d 'grant_type=client_credentials&client_id=name/[email protected]&client_secret=XXX!' "https ://example.com/admin/v100/api/oauth/token" 

答えて

0

あなたが作っていませんcurlコマンドと同じgoogle appsスクリプトのリクエスト。

あなたが application/x-www-form-urlencodedとしてコンテンツタイプを設定しても、二つの追加のヘッダーに設定されているカールで作られた要求で

Cache-Control: no-cachePostman-Token: 655d9932-4681-f23d-6caf-5fcf63c10b82

Googleのスクリプト内の同じ要求のようなものになります:

var payload = { 
    'grant_type': 'client_credentials', 
    'client_id': 'name/[email protected]', 
    'client_secret': 'XXX!' 
}; 
var options = { 
    'method': 'post', 
    'payload': payload, 
    'headers': { 
     "Cache-Control": 'no-cache', 
     "Postman-Token": '655d9932-4681-f23d-6caf-5fcf63c10b82' 
    } 
}; 
var test = UrlFetchApp.getRequest('https://dx-example.com/admin/v100/api/oauth/token', options); 
Logger.log(test); 

主な問題はおそらくあなたのスクリプトでapplication/jsonであり、application/x-www-form-urlencodedではないデータを投稿していることでしょう。詳細はこちら:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

関連する問題