2016-12-19 1 views
0

Google 시트에서 urlFetchApp를 사용하여 POST 요청을 보내려고합니다.Google 스크립트에서 POST 요청이 완료되지 않았습니다.

아래 코드를 작성했지만 작동하게 할 수 있습니다. 이 스크립트를 실행할 때마다 "code": 400, "message": "잘못된 요청 : 불완전한 토큰 요청"오류가 발생합니다. 나는 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 명령과 동일한 요청. Cache-Control: no-cachePostman-Token: 655d9932-4681-f23d-6caf-5fcf63c10b82

구글 스크립트에서 같은 요청이 될 것 같은 뭔가 :

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/x-www-form-urlencoded으로 콘텐츠 형식을 설정하고있다 컬로 만든 요청에 ​​

두 개의 추가 헤더를 설정 주요 문제는 아마도 스크립트에서 application/json이 아닌 application/x-www-form-urlencoded이 아닌 데이터를 게시하는 것입니다. 여기에 자세한 정보 : https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

관련 문제