2017-05-13 514 views
0

這可能是一個非常簡單的問題,但我對curl很新,並且從來沒有正確解釋它。這是我第一次必須通過curl獲得訪問令牌,我從未見過一個例子。我的谷歌搜索沒有幫助。Google Apps腳本和捲曲

我知道如何在擁有訪問令牌後創建事務請求,但無法獲取令牌以轉到該步驟。

下面是如何獲得令牌的API文檔例如:

curl -X POST -u <API USERNAME>:<API SECRET KEY> https://api.neverbounce.com/v3/access_token\ 
-d grant_type=client_credentials\ 
-d scope=basic+user 

我怎麼撥打這個電話在Google Apps Script因爲UrlFetchApp需要一個網址,但在這個例子中,URL是部分請求?

UPDATE

這是我的代碼示例:

function NBpost() { 
    var dataString = 'grant_type=client_credentials&scope=basic+user'; 
    var url = "https://api.neverbounce.com/v3/access_token"; 
    var options = 
    { 
     "method" : "post", 
     "auth": { 
     'user': <USERNAME>, 
     'pass': <SECRET KEY>, 
     }, 
     body : dataString, 
     "muteHttpExceptions" : true 
    }; 
    var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()); 
} 

的響應總是相同的:

error:"invalid_request", 
error_description:"The grant type was not specified in the request" 

我也有嘗試:

var dataString = { 
    "grant_type": "client_credentials", 
    "scope" : "basic user" 
}; 

但是迴應沒有改變。我究竟做錯了什麼?

更新2

我做了以下修改:

function myFunction(){ 
    var url ='https://api.neverbounce.com/v3/access_token'; 
    var options = { 
     method: "post", 
     u: { 
     <USERNAME> : <SECRET KEY> 
     }, 
     payload: { 
     "grant_type": "client_credentials", 
     "scope": "basic user" 
     }, 
     muteHttpExceptions: true 
    }; 
    var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()); 
} 

現在,我得到這個錯誤:

error:"invalid_client" 
error_description:"Client credentials were not found in the headers or body" 

回答

2

約下面的示例腳本如何?我不知道這是否正常工作,因爲我沒有<API USERNAME><API SECRET KEY>

示例腳本:

var apiusername = <API USERNAME> 
var apisecretkey = <API SECRET KEY> 
var url ='https://api.neverbounce.com/v3/access_token'; 
var options = { 
    method: 'post', 
    headers : {"Authorization" : " Basic " + Utilities.base64Encode(apiusername + ":" + apisecretkey)}, 
    payload: { 
    "grant_type": "client_credentials", 
    "scope": "basic+user" 
    }, 
    muteHttpExceptions: true 
}; 
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()); 

如果這行不通,或者如果我誤解你的問題,我很抱歉。

+0

我很欣賞這種嘗試,但我得到這個錯誤:'例外:登錄信息不允許' – davids

+0

對不起。我剛纔更新了它。它包括對標題的基本認證。請嘗試。 – Tanaike