如何捕获谷歌地图的无效API密钥

时间:2010-12-13 12:42:57

标签: javascript google-maps

我有这段代码:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=babab" type='text/javascript'></script> 

如果密钥无效,则会弹出警报,但我想在这种情况下执行某些操作。我不知道如何勾选它。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

Google不提供检查Google Maps API密钥的外部方法。因此,您无法使用例如查询某些服务。 “此代码是否有效abcde1234”并获得TRUE / FALSE响应。

关于how the Maps API key is generated的讨论。但我建议您查看Mike Williams about the GValidateKey function的帖子。这是实际进行魔术验证的功能 - 它的确切功能,例如从您的Google帐户/域创建哈希 - 我们不知道。

对于检查提供的API密钥是否正确的问题,我看到了两个解决方案:

  1. 使用一些自定义代码覆盖传入警报(检查警报内容,或检查是否在页面加载后X秒发生警报)
  2. 以某种方式获取GValidateKey函数以事先验证您的密钥。也许你可以在引用API Javascript之前调用它?对我来说听起来很残忍......
  3. 您可能遇到的问题是您不知道Google实际检查的内容。引荐来源,引荐网站,主机 - 许多可能性(服务器的IP地址,但名称加上一些其他信息)。

答案 1 :(得分:3)

如果使用了无效的API密钥,我只是遇到了执行操作的需要。 Google的文档states

  

如果要以编程方式检测身份验证失败(例如自动发送信标),则可以准备回调函数。如果定义了以下全局函数,则在验证失败时将调用它。

这就是我需要做的全部:

function gm_authFailure() { // Perform action(s) }

答案 2 :(得分:2)

对于现代浏览器(IE9 +和其他浏览器),您可以使用DOMNodeRemoved event。您只需要将事件处理程序添加到传递给地图构造函数的元素中:

var map = new google.maps.Map(element, myOptions);

 element.addEventListener("DOMNodeRemoved", function(e){
   if (e.target === element){
     //your code here
     element.removeEventListener("DOMNodeRemoved", mapWasRemovedHandler, true);
   }
 }, false);