首页 > 解决方案 > Google Apps 脚本:对 Luno API 的 API 身份验证

问题描述

这里的总菜鸟程序员(最初是一名老派机械工程师)。

在网上学习了一些 Javascript 课程后,我想我可以尝试在 Google Sheet 上构建一个简单的脚本。我的项目计划是有一个脚本来通过他们的API自动跟踪我在Luno.com (cryptoexchange) 上的所有交易。他们的API 文档在这里

我试图使用List Transactions来填充我的电子表格上的所有历史交易,但我卡在了身份验证 UrlFetchApp.fetch(url) 端点访问请求中

编辑:您应该重新考虑公开分享您的身份验证信息。我删除了它。

下面是我的 Code.gs 脚本:

function importStatementLuno() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //get active spreadsheet (bound to this script)
  var url = 'https://api.luno.com/api/1/accounts/xxx/transactions'; //api endpoint as a string

  var response = UrlFetchApp.fetch(url,{'muteHttpExceptions': false}); // get api endpoint
  var json = response.getContentText(); // get the response content as text
  var lunodata = JSON.parse(json); //parse text into json

Logger.log(lunodata);

我的 fetch 响应给了我这个错误:

异常:对https://api.luno.com的请求失败,返回代码 401。截断的服务器响应:未经授权(使用 muteHttpExceptions 选项检查完整响应)

我一辈子都无法理解他们的文档!我不确定是否实际上有不同的表达式用于向他们的服务器提供身份验证密钥(他们在他们的入门文档中明确提到他们更好地支持 Go )我希望这里有人可以帮助我指出我哪里出错了。

标签: javascriptgoogle-apps-script

解决方案


基于Luno-Go 文档,它使用SetBasicAuth并根据Go 文档SetBasicAuth只是 HTTP 基本身份验证。如果它解决了您的问题,您可以尝试下面的代码吗?

代码:

var apiKeyID = 'apiKeyID';
var apiKeySecret = 'apiKeySecret';

var headers = {
  "Authorization": "Basic " + Utilities.base64Encode(apiKeyID + ":" + apiKeySecret)
};

var options = {
  "headers" : headers 
};

var response = UrlFetchApp.fetch(url, options); // get api endpoint

新错误:

错误

  • 错误现在有所不同,因为我使用了无效的凭据。试着在这里输入你的。

推荐阅读