2013-09-10 2 views
0

Итак, я пытаюсь установить связь с авитами freshbooks, сделав запрос образца подробно на странице разработчиков свежих книг (http://developers.freshbooks.com/). Мы выполняем аутентификацию на основе токенов, а не используя OAuth.Ошибка аутентификации UrlFetchApp Freshbooks

У меня есть мой код, регистрирующий ответы на мои запросы в электронной таблице. Ответы было лесозаготовительные следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<response xmlns="http://www.freshbooks.com/api/" status="fail"> 
    <error>Authentication failed.</error> 
    <code>20010</code> 
</response> 

Я был в состоянии проверить подлинность при использовании завитка команды в консоли, но не при запуске скрипта. Ниже приведен код, который я использовал. Вышедшие из протоколирование в таблицу части и нашего конкретного URL и authToken:

// Sample function to call into an API using basic HTTP auth 
function freshbooksTest() { 
    var url = ; 
    var authToken = ; 

    var unamepass =authToken+":X"; 
    var digestfull = "Basic "+unamepass; 


    var payload = '<request method="system.current"></request>'; 

    var options = 
    { 
     "method" : "post", 
     "muteHttpExceptions": true, 
     "headers" : {"Authorization": digestfull}, 
     "payload" : payload 
    }; 

    var response = UrlFetchApp.fetch(url, options); 
    var xml = response.getContentText(); 
} 

Я извлекаться темы, где люди, имеющие аналогичные проблемы, но решения были либо не применимы к моей ситуации, или уже пробовали. Любые предложения приветствуются.

ответ

0

Не определенно знаком с UrlFetchApp, но если он не сделает это за вас, вам нужно будет закодировать Base64 digestfull, прежде чем отправлять его в заголовке.

0

Похоже, вам нужно, чтобы база 64 кодировала ваш токен аутентификации. Код должен выглядеть так:

function freshbooksTest() { 
    var url = ; 
    var authToken = ; 

    var unamepass = authToken+":X"; 
    var digestfull = "Basic "+ Utilities.base64Encode(unamepass); 


    var payload = '<request method="system.current"></request>'; 

    var options = 
    { 
     "method" : "post", 
     "muteHttpExceptions": true, 
     "headers" : {"Authorization": digestfull}, 
     "payload" : payload 
    }; 

    var response = UrlFetchApp.fetch(url, options); 
    var xml = response.getContentText(); 
} 
Смежные вопросы