2017-05-13 10 views
0

Dies ist wahrscheinlich ein sehr einfaches Problem, aber ich bin ziemlich neu zu curl und habe es nie richtig erklärt. Dies ist das erste Mal, dass ich ein Zugangs-Token über curl bekommen musste und ich habe noch nie ein Beispiel gesehen. Meine Google-Suche war nicht hilfreich.Google Apps Script und curl

Ich weiß, wie ich die Transaktionsanforderungen machen kann, sobald ich das Zugriffs-Token habe, aber ich kann das Token nicht dazu bringen, zu diesem Schritt weiterzugehen.

Unten ist das api-Dokumentation Beispiel dafür, wie das Token zu erhalten:

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 

Wie ich eine URL dieses Aufruf in Google Apps Script seit UrlFetchApp erfordert, um meine Aufgabe, aber die URL in diesem Beispiel ist ein Teil der anfordern?

UPDATE

Dies ist eine Probe von meinem Code ist:

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

Die Antwort ist immer die gleiche:

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

ich auch versucht:

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

Aber die Antwort ändert sich nicht. Was mache ich falsch?

UPDATE 2

ich folgende Änderungen vorgenommen:

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

Nun bekomme ich diesen Fehler:

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

Antwort

2

Wie wäre es folgende Beispielskript? Ich weiß nicht, ob das funktioniert, weil ich <API USERNAME> und <API SECRET KEY> nicht habe.

Beispielskript:

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

Wenn dies nicht funktioniert, oder wenn ich Ihre Frage falsch verstanden, tut mir leid.

+0

Ich schätze den Versuch, aber ich bekomme diesen Fehler: 'Ausnahme: Anmeldeinformationen verboten ' – davids

+0

Tut mir leid. Ich habe es gerade aktualisiert. Es enthielt die grundlegende Authentifizierung für den Header. Versuch es bitte. – Tanaike

Verwandte Themen