检测无效 Google 映射 API 密钥格式而不调用 API

Detect invalid Google Maps API key format without calling API

我维护了一些允许开发人员使用 Google 地图 javascript API 的插件。开发人员有责任在使用我的插件构建应用程序时提供他们的 API 密钥。

在必须输入密钥的示例代码和应用程​​序中,我放入了“(enter your API key here)”或“API_KEY”之类的示例,因为这些已签入可公开访问的源代码存储库。目前,我的插件只是将这个字符串传递给 Google 映射 API "as is"。我所做的唯一验证是测试是否输入了一些值。

我想要一个简单 测试(以合理的准确性)确定给定字符串是否不是真正的 Google 地图 API 键。到目前为止,我还没有看到来自 Google 的任何文档表明字符串应该是什么样子。

我不在乎我的测试是否有时会出现误报,因为如果开发人员没有有效密钥,他们会在 运行 时收到 Google 地图错误。但是,我确实关心假阴性;如果他们提供了一个有效的 Google Maps API 密钥,但我的代码错误地将其阻止为 "invalid",那将是我的失败。

我见过的所有有效 Google 地图 API 键似乎都是 39 个字符长,由字符 AI 后跟 37 个字母数字字符或破折号组成,例如:

AIjlSyEI1n03b7-this-is-fake-5tHcDxy1RnI

如果我简单地测试候选密钥至少有 39 个字符长,我会 运行 惩罚任何人的风险吗?

如果我测试前两个字符是AI呢?

如果我检查 ()_ 等字符的存在会怎样?

(如果你看到一个有效的Google Maps API键不符合上面"rules"我编的,你能评论一下吗?这将有助于推翻我的假设。)

(正如 MrUpsidown 指出的那样,documentation 没有以任何方式说明任何规则 - 因此唯一的 完美 方法是调用 API - 但在我的例子中,我想要在服务器端 运行 隔离的代码)

您不应该依赖字符串验证,因为 API 键的格式化方式总是会改变,就像您说的那样,显示有效 [=15= 的错误消息会给客户带来糟糕的体验] 钥匙。这是一个可能有用的功能,因此我建议您在 Google's issue tracker. For now all you can do is call the API to catch 中提交功能请求,如果请求失败,如 MrUpsidown 建议的任何错误。

希望对您有所帮助!