百度地图AK鉴权说明与白名单设置方法
问题
近期网站经常会提示未授权使用百度地图的提示:
自己之前对百度地图开放平台的鉴权服务不是很清楚;所以做了一个详细的研究,接下来做个详细的描述希望能够帮助到大家
百度地图开放平台提供的ak分类说明
这个截图是百度底图开放平台官网的ak界面截图,百度地图应用管理台
从截图我们可以看到ak主要分为以下几类:
浏览器端
应用功能:百度地图开放平台提供的所有javaScript API
应用场景:H5网页,引入地图相关功能
微信小程序
应用功能:百度地图开放平台提供的微信小程序API(https://lbsyun.baidu.com/index.php?title=wxjsapi)
应用场景:主要在小程序中实现一些地址解析等功能
服务端
应用功能:百度地图开放平台提供的所有服务接口 (https://lbsyun.baidu.com/index.php?title=webapi)
应用场景:在服务器上封装相应接口、实现文档中描述的一些功能
ios应用、Android应用:
应用功能:百度地图开放平台提供的供移动端APP开发的SDK(iOS、Android)
应用场景:在APP中引入相应功能的SDK包,实现某些地图功能(地图展示、测距、导航、路线规划等)
从AK分类来看,百度地图开放平台对ak的使用场景做了严格的限制、比如在H5页面中引入jsapi的话使用服务端类型的ak、肯定会出现截图中描述的问题;所以我们一定要按照自己的需求选择合适类型的ak。
问题排查
截图的弹窗提示一般出现在网页中,针对问题中描述的弹窗提示的截图,可以按步骤排查一下:
1、检查自己引入地图功能的时候是否设置了ak;
我们引入百度地图网页版API的链接一般是这个:
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
可以检查一下自己是否将您的密钥修改成了自己账户下的 浏览器类型的AK;
如果没有替换的话就到百度地图开放平台官网申请相应类型的AK、替换一下
2、如果确认已经替换了ak,那么需要确认一下自己引入的ak类型是否正确:
还是到百度地图开放平台的控制台应用列表中检索一下,比如我这个ak就是错误使用了微信小程序类型的ak
当然了,还会有一种情况:你的ak已经被误删了搜不到,那么就需要创建新的ak来替换了
3、如果上一步检索到的ak是浏览器类型的,但是还是有弹窗提示;这样就得检查您的白名单设置了:
在搜索结果中选择修改应用会看到如图所示的画面:
我们一定要确认: 1)勾选了javascript功能 2)白名单设置是否正确 白名单的说明: 这个白名单下边有详细介绍,但是还是很难理解。 例如: * 是所有网站都可用 但是安全性很差,所有人都可以抓到这个ak来使用;这对前端来说是难以接受的,万一被抓走干坏事被封了就会影响自己使用。
如果您的网站一级域名是 www.baidu.com ,那么建议设置为 ``*.baidu.* ``
这样您的该域名下的所有链接就都可以正常使用相关功能了;
谨记,一定要有*号通配,千万不能设置成baidu.com;这样校验的时候肯定通不过啊
如果您的网站域名是 lxn.cool 这种形式的,建议设置为 *lxn.cool*。
鉴权测试
最后,实际上百度地图jsapi的鉴权URL是这个:api.map.baidu.com/?qt=verify&…**************** 把您自己的ak替换一下,访问这个请求看看返回什么内容; 鉴权通过的状态码是:
{
"error": 0
}
如果error是0的就可以正常使用功能了,如果是其他的状态码就自己对照状态说明自己排查了:
https://lbsyun.baidu.com/index.php?title=webapi/appendix