Google API 密钥 - 啥是服务器密钥和浏览器密钥

Posted

技术标签:

【中文标题】Google API 密钥 - 啥是服务器密钥和浏览器密钥【英文标题】:Google API keys - What is server key and browser keyGoogle API 密钥 - 什么是服务器密钥和浏览器密钥 【发布时间】:2013-07-16 22:30:25 【问题描述】:

我在我的应用程序中使用谷歌地图,并使用以下格式的 URL,没有 API 键值,

<script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?sensor=SET_TO_TRUE_OR_FALSE">
    </script>

现在我需要使用 API key 来跟踪请求,根据示例需要添加另一个 API key 查询字符串参数,

<script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=SET_TO_TRUE_OR_FALSE">
</script>

但是,我收到了 2 把钥匙, 一种用于服务器(IP地址限制)和一种用于浏览器应用(域级别限制)如下:

服务器密钥:XXXX 浏览器密钥:YYYY

我应该在我的应用程序中使用哪个键,我应该同时使用它们吗?找不到这方面的好文章。

【问题讨论】:

您应该有两个密钥,一个放在 JS 中的公钥,一个用于解密您从 google 取回的内容的私钥,该内容使用您的私钥加密你是唯一应该拥有它的人。 我应该在我的 javascript 中使用“浏览器键”吗?那我什么时候应该使用Serverkey呢?是不是要用 google 帐号才能查看分析数据? 【参考方案1】:

试一下浏览器键,找到了这个帖子,不过是2012年写的,

https://groups.google.com/forum/#!topic/android-gcm/Ir-dNtPRKcU

在网上找到这个: "2.单击创建新服务器密钥。服务器密钥或浏览器密钥都可以使用。使用服务器密钥的优点是它允许您将 IP 地址列入白名单。出现以下屏幕:"

http://developer.android.com/google/gcm/gs.html

希望对您有所帮助!

【讨论】:

我确实使用浏览器密钥;但是,我没有服务器密钥。我只是在谷歌上搜索浏览器密钥与服务器密钥。哈。所以我要去兔子洞。我会更新的。 浏览器密钥 - 浏览器密钥必须与某些域一起配置。例如.abc.com/,localhost/*.如果您的谷歌地图访问请求是从这些域发送的,那很好。但是如果你在另一个应用程序(xyz.com)中使用这个密钥,它会给出一个无效的密钥错误......服务器密钥必须配置IP(IP白名单)。如果谷歌地图访问请求是从这些IP发送的,它将起作用。否则会抛出错误。这些场景我都试过了。 @Dhanuka777 这两个密钥的有效期呢?【参考方案2】:

这与 Google 最近刚刚弃用其 Web 服务 API 的浏览器密钥有关。

以下是当前定义:

服务器密钥

如果您的应用程序在服务器上运行,请创建并使用服务器密钥。做 不要在服务器代码之外使用此密钥。例如,不要 将其嵌入网页中。为防止配额被盗,请限制您的密钥,以便 仅允许来自您服务器的源 IP 地址的请求。

浏览器键

如果您的应用程序在客户端上运行,请创建并使用浏览器密钥, 例如网络浏览器。为了防止您的密钥被用于 未经授权的网站,只允许来自您管理的域的推荐。

(来自https://developers.google.com/console/help/new/)

【讨论】:

这应该是最好的答案,并且用户应该有一个真实且更具体的用户名;) 使用此链接获取browser key:developers.google.com/maps/documentation/javascript/…并使用此链接获取server key:developers.google.com/maps/documentation/directions/…。【参考方案3】:

截至目前(2018 年初),我怀疑服务器密钥和浏览器密钥之间的区别微不足道,只是概念性的。因为 Web 控制台允许您对任何密钥应用 IP 限制或引用者限制。因此,对于同一个密钥,您可以应用引荐来源网址限制,然后将其用作浏览器密钥,然后应用 IP 限制,然后将其用作服务器密钥。此外,我没有从this official help page 找到有关服务器密钥与浏览器密钥的具体文档。

【讨论】:

以上是关于Google API 密钥 - 啥是服务器密钥和浏览器密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用服务帐户密钥对 Google Photos API 进行身份验证?

使用服务器密钥时,Google Sheets API 返回“调用者没有权限”

用于动态 IP 服务器的 Google API 密钥

Google Maps API 错误:此 API 密钥无权使用此服务或 API。地方 API 错误:ApiTargetBlockedMapError

Google 服务 3.0.0 缺少 api_key/current 密钥

从 Google GCP 项目凭据 API 密钥中检索信息