2013-03-18 39 views
8

Jeśli się nie mylę, zgodnie z UrlFetch Documentation powinienem móc wywołać New Basecamp API z poziomu Google Apps Script. Podejrzewam, że moje pomyłki pochodzą z błędów GAS formatowania (i faktu, że właśnie zaczynam to wszystko). Mam googled to przez długi czas. To jest to, co mam, a błąd wrócę z Gaz:Skrypt Google Apps i zewnętrzny interfejs API

myCode w Gaz:

function myFunction() { 
    var url = "https://basecamp.com/******/api/v1/projects.json"; 
    var headers = { 
       "contentType": "application/json", 
       "headers":{ "User-Agent": "MY_APP_NAME", 
          "username:password" : "user:pass"}, 
       "validateHttpsCertificates" :false 
       }; 

var response = UrlFetchApp.fetch(url, headers); 
var text = response.getResponseCode(); 
Logger.log(text); 
} 

Komunikat o błędzie GAZ:

Request failed for https://basecamp.com/2166446/api/v1/projects.json returned code 401. 
Server response: HTTP Basic: Access denied. (line 9, file "Code") 

Mam nadzieję, że jest to rozsądne pytanie i dziękuję za pomoc.

Odpowiedz

15

Prawidłowy nagłówek HTTP Basic Authentication, co sprawia, że ​​korzystanie z Utilities.base64Encode, przedstawia się następująco:

"headers": { 
    "User-Agent": "MY_APP_NAME (App URL/your email address)", 
    "Authorization": "Basic " + Utilities.base64Encode(username + ":" + password) 
}, 
+0

Amazing! Dzięki! Działa świetnie –

+0

Czy istnieje strona, na której znajdują się te informacje, więc mogę się jej nauczyć? –

+1

@ mat10112: Informacje są wszędzie. Zacząłem od linku do API w oryginalnym, opublikowanym artykule, gdzie wspomniano, że możesz używać podstawowego uwierzytelniania HTTP. Ponieważ jest to łatwiejsze w użyciu niż OAuth, udałem się do Wikipedii, aby dokładnie sprawdzić dokładny nagłówek używany do podstawowego uwierzytelniania HTTP. Następnie zapoznałem się z dokumentacją strony [App Script API] (https://developers.google.com/apps-script/), ponieważ wiedziałem, że mają jakieś narzędzia do kompilacji. Potem po prostu go składam. –

Powiązane problemy