如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥
Posted
技术标签:
【中文标题】如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥【英文标题】:How to add an API Key to a UrlFetchApp in Google Apps Scripts 【发布时间】:2018-08-18 10:58:30 【问题描述】:已解决 感谢 Dimu Designs 的帮助。
以下工作。
函数 myFunction() var url = "https://api.fortnitetracker.com/v1/profile/pc/Ninja"; var apiKey = "xxx-xxx-xxx";
var res = UrlFetchApp.fetch( 网址, “标题”: “TRN-Api-Key”:apiKey ); var 内容 = res.getContentText();记录器.log(res); Logger.log(内容);
问题
我正在尝试使用 Google 表格中的 Google 应用脚本来调用外部 Fortnite API 来请求玩家数据。我对如何在传递请求时添加 API 密钥作为标头感到困惑。
这是我目前所构建的(请不要笑)!...
function myFunction() var res = UrlFetchApp.fetch("https://api.fortnitetracker.com/v1/profile/PC/Ninja?"); var 内容 = res.getContentText(); Logger.log(res); 记录器.log(内容);
当我尝试运行它时,我得到以下错误:
请求失败 https://api.fortnitetracker.com/v1/profile/PC/Ninja?返回码 401. 截断服务器响应:"message":"No API key found in request"(使用 muteHttpExceptions 选项检查完整响应
我已经尝试根据许多不同的帖子以多种方式添加我的 API 密钥,但它不起作用并且让我更加困惑(此时很容易完成)。
有没有人知道我如何才能完成脚本以确保我得到信息? :)
---编辑---
首先,感谢大家的帮助,这就是我们目前所处的位置。我现在尝试了以下方法:
var url = "https://api.fortnitetracker.com/v1/profile/pc/Ninja";变量 apiKey = "xxx-xxxx-xxx";
var 响应 = UrlFetchApp.fetch( 网址, “标题”: “TRN-Api-Key”:apiKey );
这次返回的是 403 错误,而不是 401 错误。
注意,我也尝试过使用“基本”对标头进行身份验证,但这不起作用”。
【问题讨论】:
显示您尝试将密钥包含在请求中的方式。另请参阅 API 文档 - 它应说明您将如何附加密钥以提交授权请求 没有提供 API 文档。 必须有文档,否则您将不知道如何构建您的 URL。你从哪里得到你的 API 密钥?我会从那里开始。阅读授权。 @tehhowch 有但它的文档极差:fortnitetracker.com/site-api。他们甚至没有提供如何使用 API 密钥的体面示例。我想 OP 将不得不使用 Authorization 标头,但是有不同类型的令牌格式,例如“Basic”、“Bearer”……文档没有给开发人员任何使用的指示。 【参考方案1】:编辑 我怀疑 API 使用了自定义标头。当你注册一个 API 密钥时,你会得到一个如下形式的字符串:
TRN-Api-Key:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
我在这里猜测,但冒号前面的文本似乎是自定义标题,冒号后面的字符串是 API 密钥。
如果没有适当的文档,这仍然几乎是在黑暗中拍摄,但您可以尝试以下方法:
var url = "[FORTNITE-API-ENDPOINT]";
var apiKey = "[YOUR-API-KEY]"; // sans header and colon
var response = UrlFetchApp.fetch(
url,
"headers":
"TRN-Api-Key":apiKey
);
另外,请务必查看 UrlFetchApp 文档以供将来参考: https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
【讨论】:
有趣。我尝试了第一个答案,但它仍然返回 401 错误。但是使用这个版本(TRN-Api-Key)我得到了 403 错误。 api.fortnitetracker.com/v1/profile/PC/Ninja 的请求失败?返回代码 403。截断的服务器响应:"message":"Invalid authentication credentials"(使用 muteHttpExceptions 选项检查完整响应)。 (第 4 行,文件“代码”)我在 GitHub 上找到了这个,但由于这是我第一次做任何编码的经历,这就像尝试学习一门新语言......哈! github.com/qlaffont/fortnite-api/blob/master/README.md 使用您使用的更新代码更新您的原始帖子,以便我们对其进行检查 啊..删除“?”在你的 url 字符串的末尾,看看它是否有效(我建议你删除你的 api 密钥,以免有人使用它) 并且你的url字符串中的“PC”需要小写(刚刚测试过,它对我有用) 哈哈关于 api 密钥的好点。我已删除 ?,但仍然收到 403 错误。以上是关于如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥的主要内容,如果未能解决你的问题,请参考以下文章