Hola a todos, recientemente he estado tratando de hacer una publicación de recuperación en el script de la aplicación, desde una API llamada salesbinder (sistema de inventario), he logrado obtener y extraer todos los datos del inventario, sin embargo, he tenido problemas para publicar y agregar documentos. y recibió un código de error ->
"Truncated server response: {"message":"Unauthorized","url":"\/api\/2.0\/documents.json","code":401}"
ya que estoy usando el mismo nombre de usuario y contraseña puedo asegurar que los datos son correctos para la autenticación, agradecería mucho si alguien pudiera ayudarme a solucionar el problema.
Aquí está la documentación de la API ( https://www.salesbinder.com/api/documents/add/ ) y el código que he estado usando.
function posting(){ var Username = "{API KEY}" var Password = "x" var headers = { "Authorization" : "Basic " + Utilities.base64Encode(Username+ ':' + Password) }; var url ='{API URL}' var data ={ "document":{ "customer_id": 'a93a9e9a-5837-4ec5-9dc7-47cc8cfd84e4', "issue_date":"2022-05-09", "context_id":5, "document_items":[ { "quantity":2, "price":134, "item_id":" b04993fe-7b17-42a1-b5e5-2d34890794c9" } ] }, }; var option = { "method": "post", 'payload' : data, "headers": {headers}, }; UrlFetchApp.fetch(url, option); }Creo que su mensaje de error de "message":"Unauthorized" se debe a "headers": {headers}, . Esto ya se ha mencionado en el comentario de chrisg86 .
Y también, a partir de este documento , parece que el cuerpo de la solicitud debe enviarse con Content-Type: application/json .
var option = { "method": "post", 'payload' : data, "headers": {headers}, }; var option = { "method": "post", "payload": JSON.stringify(data), headers, // or "headers": headers "contentType": "application/json" };"Basic " + Utilities.base64Encode(Username+ ':' + Password) , data y url son correctos. Por favor tenga cuidado con esto.