检测无效 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 建议的任何错误。
希望对您有所帮助!
我维护了一些允许开发人员使用 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 建议的任何错误。
希望对您有所帮助!