亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述在Android项目中(百度地图),报错:key验证出错相关的知识,希望能为你提供帮助。
以下列举目前反馈较多的一些问题
1.
同样的key和key的配置,同一个打包的app,有的手机上key验证成功,有的手机上key验证失败?
说明:只要存在key验证成功的情况,key和key的相关配置都是正确的,不要再更换key或者修改key的配置,请从手机系统或者网络环境上检查原因。
推荐解决方法:
A.
key验证依赖当前系统日期和时间,确认手机系统日期和时间是否正确。请先将日期时间调整为当前时间或者设置为自动网络获取。
B.
key验证依赖网络通信,确认网络是否可用。请先在手机上使用浏览器访问网页测试网络是否连通。
2.
正常打包后安装app,app中key验证成功,调试app的时候,key验证失败?
说明:同样的app已经验证成功,说明此app的key是正确的,不要再更换key或者修改key的配置,问题出在调试环境上,请从调试环境上检查原因。
推荐解决方法:
A.
key验证依赖于https方式的网络通信,确认app的调试环境中是否有破坏https环境的因素。比如很多开发者在调试过程中,同时打开http或者https的抓包工具(Fiddler等),这种抓包工具会引起https的证书验证等一系列验证问题,导致key验证中网络交互失败,这种情况下,请关闭抓包工具后调试。
3.
直接连2/3/4G移动网络时key验证成功,连接wifi时key验证失败?
说明:key的验证需要通过https://api.map.baidu.com访问百度服务器。
推荐解决方法:
A.
如果wifi使用了网络代理服务器,请确认代理服务器支持https通信,并且确认能够通过域名api.map.baidu.com访问。
4.
是否支持完全离线的key验证?
说明:key验证必须联网验证,不支持离线验证,联网服务器为https://api.map.baidu.com。
推荐解决方法:
A.
如果是使用限定的定向域名访问网络,请将api.map.baidu.com域名加入网络访问的白名单。
5.
定位SDK中可能出现第一次定位成功,后续均返回505错误。
说明:为了保证定位效率,定位和key验证是同时进行的,很有可能定位先处理完,所以在key验证错误的消息还未收到时已经显示定位成功了。此时说明key的配置肯定是错误的,所以请正确配置key。
推荐解决方法:
A. 按照官方配置文档,仔细检查key的配置。
6.
定位SDK并只使用GPS模式(不联网)定位返回505错误。
说明:定位SDK需要联网进行key验证,如果使用定位SDK而不使用网络定位(或者不开启网络),仅使用GPS定位的话,使用系统的定位接口即可
还是不知道怎么做请看下面:
常见问题解决方法汇总?请参考:key验证常见问题总结
如何获取SHA1?详细的方法请参考:android Studio 和 Eclipse 中获取SHA1详解
如何获取AK或者key?详细的方法请参考:官方教程
鉴于Android版SDK中出现的大量key验证失败问题,基本上都是在API控制台申请AK的时候填写的
包名或者SHA1不正确导致的(包名或者SHA1的获取详见官方教程)。搜索log,若出现"Authentic
ation Error errorcode:
230
uid: -1 appid -1 msg: APP Scode码校验失败",则认真阅读下面的内
容。
如果想快速解决验证问题,可以使用下面提供的安全码校对工具获取APP正确的包名和SHA1值,并将这两个值更新到API控制台对应的AK上即可。安全码校对工具:
MCodeCheck.zip
(363.22 KB, 下载次数: 4152)。
打开应用后,找到自己开发的APP(默认最新安装的APP排在最上面),点击后会弹出对话框显示包名和
SHA1值。
打开API控制台,将上面显示的包名和SHA1值更新到对应的ak中即可(注意:在填入SHA1和包名的时候不能带有空格)。
特别注意:已经上线发布的APP中使用的AK不要轻易更新,否则可能会导致已
发布的APP鉴权失败。
详细的获取SHA1方法参考:Android Studio 和 Eclipse 中获取SHA1详解
区分debug版和release版签名文件打包的开发者特别注意:
很多开发者都有debug版和release版签名文件分别进行apk打包,如果你此刻安装的app是debug版签名
文件打包的,此处获取到的就是debug版的SHA1;相反如果你安装的app是release版签名文件打包的,
【在Android项目中(百度地图),报错(key验证出错)】此处获取到的就是release版的SHA1。API控制台中,debug版签名文件对应的SHA1值填入"开发版SHA
1"中;同理,release版签名文件对应的SHA1值填入"发布版SHA1"中,这样能保证开发和测试的时候使
用同一个AK即可。
debug版签名文件:是指在开发过程中从Android Studio或者Eclipse中直接调试运行的apk使用的签名文件,一般是开发工具自动处理的。
release版签名文件:是指在提交测试或发布时候,选择指定的签名文件进行打包的签名文件,一般同一个APP使用一个统一的签名文件。
进一步解析什么师230错误:让大家明白点:
1.什么是230错误
为增强移动APP对百度开发SDK/API服务访问的控制,也避免恶意开发者对百度地图服务进行攻击,我们对Mobile类型(Android/ios)的服务请求进行了安全码校验;所谓安全码即开发者在API控制台申请AK(AK和APP一一对应)时提供的APP签名的SHA1+”
;
”
+包名(具体可参考http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)。
请求服务必须要携带该安全码作为参数,不携带或者携带不一致的安全码给服务端,均会返回230错误。
2.如何解决230错误
目前我们发现主要是Android类型的APP存在该参与错误,安全码是sdk自动从APP配置中获取的,开发者无需自己填写。当出现230错误时,请开发者先查看一下APP当前签名的SHA1值(注意不是MD5)和包名,然后去API控制台把查看该AK对应配置的安全码是否和APP实际的一致,如果不一致请去API控制台手动修改一致即可~~
再说一下出现这些的原因是是什么?
原因一:AK错误
仔细检查一下你的应用中使用的AK是否正确,和生成该AK的数字签名(SHA1)、包名是否跟你当前的程序一致。
如图是我获取的用来测试的AK:
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
版权声明:本文为CSDN博主「惜忆隐蝶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiyiyindie/article/details/53750434
推荐阅读
- appium---封装定位
- AndroidIntent意图 : 基本使用
- typeError: cannot read property '_wrapper' of undefined
- 安卓全屏或沉浸式状态栏下输入框(EditText)被键盘遮挡解决方法
- 英语四六级模拟考试系统APP
- Android项目——用户主页实现
- IndiaMART面试问题精品推荐合集
- 热门精品!SpaceX面试题合集详解
- 热门推荐!最新微软面试题精品合集