高德开发者论坛

标题: KEY鉴权失败如何处理? [打印本页]

作者: 小溪儿1988    时间: 2015-3-16 10:31
标题: KEY鉴权失败如何处理?
本帖最后由 小溪儿1988 于 2015-9-14 17:26 编辑

一些用户在替换了新版本的SDK包,查看错误码是32(key鉴权失败)。自己如何排查问题呢?1、查看key是否已经重新申请。如果您的key是14年9月23日之前申请的,需要您登陆账号重新申请key进行使用。新申请的key是需要绑定app的包名和SHA1。
SHA1的获取方法参见http://lbs.amap.com/home/faq/key/#Q08
2、工程内使用到的lbs产品都要进行更新。除了更新定位SDK到V1.3.0及以上版本,其他产品,如地图包也要更新。地图包需要更新到V2.3.0及以上版本。
3、SHA1是否正确。SHA1分为debug版本和release版本,您打包的是否要确认下,绑定的SHA1是否对应。4、检查下添加key的方式。配置文件的话,key的位置是否添加正确,标红文字不需要变更 ;如果使用定位SDK,是不能使用代码设置的方式添加key。
       <application        android:icon="@drawable/ic_launcher"
        android:label="@string/demo_title" >
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="添加key" />








作者: mitbbsapp    时间: 2015-4-13 09:49
你好,我用debug模式下的的sha1申请的key刚开始可以用,差不多2周之后就key验证失效,这是为什么啊?我用发布版的sha1申请的key我调试下直接说key验证无效。我该怎么正常调试,发布下使用什么key?
作者: hezd    时间: 2015-4-20 13:35
你好,debug模式下的key,只能在当前机器上机器的eclipse上调试吗,我发现换到别人机器上用不了了啊。
作者: weifu2009    时间: 2015-4-20 17:08
你好,debug模式下的key,只能在当前机器上机器的eclipse上调试吗,我发现换到别人机器上用不了了啊。

我也碰到这个问题? 如果是这样, 那多人协同开发怎么解决? 总不至于每个人都去申请一个debug模式的key吧

作者: feesoft    时间: 2015-4-29 09:26
SH1来自打包时的签名文件,每个人电脑上默认的签名文件若不一致(尤其是debug模式默认使用预置的签名文件)自然是不行的。可以试试把这个签名文件复制给大家。

作者: amap_1371800619    时间: 2015-6-24 11:16
一直抱32的错误,搞不懂为什么,你们这鉴权是不是有问题啊?
作者: 小溪儿1988    时间: 2015-6-24 11:41
amap_1371800619 发表于 2015-6-24 11:16
一直抱32的错误,搞不懂为什么,你们这鉴权是不是有问题啊?

打印下SHA1,是否跟绑定的不一致,其他产品,是不是也更新了版本。
publicstatic String sHA1(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_SIGNATURES);

byte[] cert = info.signatures[0].toByteArray();

MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] publicKey = md.digest(cert);
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < publicKey.length; i++) {
String appendString = Integer.toHexString(0xFF & publicKey)
.toUpperCase(Locale.US);
if (appendString.length() == 1)
hexString.append("0");
hexString.append(appendString);
hexString.append(":");
}
return hexString.toString();
} catch (NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
returnnull;
}

作者: amap_1371800619    时间: 2015-6-24 15:30
前面两个证书都不行,重新换了第三个证书申请的,可以了,这是为什么呢?
作者: amap_1861008939    时间: 2015-7-4 17:14
amap_1371800619 发表于 2015-6-24 15:30
前面两个证书都不行,重新换了第三个证书申请的,可以了,这是为什么呢? ...

您好,请教一下,重新换第三个证书是什么意思?
作者: amap_1861008939    时间: 2015-7-4 17:21
小溪儿1988 发表于 2015-6-24 11:41
打印下SHA1,是否跟绑定的不一致,其他产品,是不是也更新了版本。
publicstatic String sHA1(Context co ...

版主,我也遇到这样的 鉴权失败 问题,请问如果不在Eclipse 中调试,而是直接放在Android源码中编译,请问sha1还是从Eclips中--->project--->preferencespro中去找吗? 但是我去我电脑中.android文件夹下,输入 keytool -list -keystore debug.keystore 发现只有认证指纹 (MD5)  没有sha1的,并且从eclipse中查看 md5的是和从.android文件夹中的是一致的 .请帮忙看一下,谢谢~
作者: 小溪儿1988    时间: 2015-7-6 10:35
amap_1861008939 发表于 2015-7-4 17:21
版主,我也遇到这样的 鉴权失败 问题,请问如果不在Eclipse 中调试,而是直接放在Android源码中编译,请问sha ...

可以参照上边代码打印一下看看。
作者: shbj    时间: 2015-8-13 15:56
我同一个key在我之前版本的app上是没有问题的 最新一次更新的版本一致提示key鉴权失败
作者: 小溪儿1988    时间: 2015-8-20 16:22
shbj 发表于 2015-8-13 15:56
我同一个key在我之前版本的app上是没有问题的 最新一次更新的版本一致提示key鉴权失败  ...

添加一项有可能出现的问题
1、检查下添加key的方式。配置文件的话,key的位置是否添加正确 ;如果使用定位SDK,是不能使用代码设置的方式添加key。
作者: hexf327221    时间: 2015-9-6 11:19
demo能给我一个key吗?我发现用我的KEY是验证不通过的
作者: amap_1862966592    时间: 2015-9-28 13:51
我的也是,32的错误,我重新创建项目后,把demo移进去,根据当前项目申请的key还是不行,第一次用就这样,真的无语呀。
作者: melc110    时间: 2015-10-8 17:17
KEY是和包名和证书绑定的,出现32错误先自己检查一下包名是不是跟申请的一致,签名文件一般情况不单独指定不会变,重新安装系统或者换开发工具的话可能会改变
作者: amap_1590089198    时间: 2015-10-16 16:28
版主,请问如果不在Eclipse 中调试,而是直接放在Android源码中编译,请问sha1怎么获得?
作者: 小溪儿1988    时间: 2015-10-16 17:35
amap_tel_5620552eed7ff36083 发表于 2015-10-16 16:28
版主,请问如果不在Eclipse 中调试,而是直接放在Android源码中编译,请问sha1怎么获得? ...

有代码方式,看下:
publicstatic String sHA1(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_SIGNATURES);

byte[] cert = info.signatures[0].toByteArray();

MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] publicKey = md.digest(cert);
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < publicKey.length; i++) {
String appendString = Integer.toHexString(0xFF & publicKey)
.toUpperCase(Locale.US);
if (appendString.length() == 1)
hexString.append("0");
hexString.append(appendString);
hexString.append(":");
}
return hexString.toString();
} catch (NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
returnnull;
}

作者: amap_1565628081    时间: 2015-10-19 15:12
小溪儿1988 发表于 2015-6-24 11:41
打印下SHA1,是否跟绑定的不一致,其他产品,是不是也更新了版本。
publicstatic String sHA1(Context co ...

这行代码有问题:String appendString = Integer.toHexString(0xFF & publicKey).toUpperCase(Locale.US);
Error27, 64) 错误: 二元运算符 '&' 的操作数类型错误
第一个类型:  int
第二个类型: byte[]
作者: amap_1565628081    时间: 2015-10-19 15:22
http://lbsbbs.amap.com/forum.php ... tid=8964&extra=
debug包 key鉴权失败!!
sha1值没问题,keytool取的,包名也正确,几个library包都是最新的,POI搜索鉴权失败,求助!
作者: amap_1565628081    时间: 2015-10-19 15:29
mitbbsapp 发表于 2015-4-13 09:49
你好,我用debug模式下的的sha1申请的key刚开始可以用,差不多2周之后就key验证失效,这是为什么啊?我用发 ...

debug和release的签名文件不同不是很正常吗?这种弱智问题简直浪费时间。。。
作者: amap_1565628081    时间: 2015-10-19 15:30
hezd 发表于 2015-4-20 13:35
你好,debug模式下的key,只能在当前机器上机器的eclipse上调试吗,我发现换到别人机器上用不了了啊。 ...

每个电脑生成唯一的签名文件,对应唯一的sha1值,先百度google之后再提问好吗?版主有限的精力先解决真正的bug吧
作者: amap_1565628081    时间: 2015-10-19 15:32
weifu2009 发表于 2015-4-20 17:08
你好,debug模式下的key,只能在当前机器上机器的eclipse上调试吗,我发现换到别人机器上用不了了啊。

我 ...

换统一的debug签名文件不就可以了,呵呵
作者: amap_1565628081    时间: 2015-10-19 15:32
amap_1371800619 发表于 2015-6-24 11:16
一直抱32的错误,搞不懂为什么,你们这鉴权是不是有问题啊?

同是,比百度sdk的鉴权问题大多了
作者: amap_1565628081    时间: 2015-10-19 15:36
amap_1861008939 发表于 2015-7-4 17:21
版主,我也遇到这样的 鉴权失败 问题,请问如果不在Eclipse 中调试,而是直接放在Android源码中编译,请问sha ...

真是哗了狗了,把-v参数带上  keytool -list -v -keystore debug.keystore 细心点好吗?
P.S. 版主,问题都帮你回答了,看看我真正的bug吧!急
作者: amap_1565628081    时间: 2015-10-19 15:37
hexf327221 发表于 2015-9-6 11:19
demo能给我一个key吗?我发现用我的KEY是验证不通过的

我也是,百度sdk也有这个问题,他们有个通用可用的key
作者: amap_1327433046    时间: 2015-10-19 18:35
http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=8979  大神帮我看看呗

作者: 小溪儿1988    时间: 2015-10-20 09:56
守护者123 发表于 2015-10-19 18:35
http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=8979  大神帮我看看呗

回答你啦
作者: cqzxc    时间: 2015-10-28 18:03
小溪儿1988 发表于 2015-6-24 11:41
打印下SHA1,是否跟绑定的不一致,其他产品,是不是也更新了版本。
publicstatic String sHA1(Context co ...

你代码有问题 应该是 :

  1. public static String sHA1(Context context) {
  2.     try {
  3.         PackageInfo info = context.getPackageManager().getPackageInfo(
  4.                 context.getPackageName(), PackageManager.GET_SIGNATURES);

  5.         byte[] cert = info.signatures[0].toByteArray();

  6.         MessageDigest md = MessageDigest.getInstance("SHA1");
  7.         byte[] publicKey = md.digest(cert);
  8.         StringBuffer hexString = new StringBuffer();
  9.         for (int i = 0; i < publicKey.length; i++) {
  10.             String appendString = Integer.toHexString(0xFF & publicKey[i])
  11.                     .toUpperCase(Locale.US);
  12.             if (appendString.length() == 1)
  13.                 hexString.append("0");
  14.             hexString.append(appendString);
  15.             hexString.append(":");
  16.         }
  17.         return hexString.toString();
  18.     } catch (PackageManager.NameNotFoundException e) {
  19.         e.printStackTrace();
  20.     } catch (NoSuchAlgorithmException e) {
  21.         e.printStackTrace();
  22.     }
  23.     return null;
  24. }
复制代码

作者: amap_1771708775    时间: 2015-11-16 01:17
你好,如果我是做手机方案的,我想在源码中使用高德的API,我在eclipse里面调好的代码(包括AndroidManifest.xml里面的key)移植过去,但是发现key是无效的,针对这个情况,要怎么解决呢?
作者: 小溪儿1988    时间: 2015-11-18 20:57
岑兴灿 发表于 2015-11-16 01:17
你好,如果我是做手机方案的,我想在源码中使用高德的API,我在eclipse里面调好的代码(包括AndroidManifest ...

确认下 key是否申请的是android平台,填写添加的地方是否正确。
作者: amap_1771708775    时间: 2015-11-21 20:49
哎,这个当然确认了,你一直没搞清楚我问的问题是什么
作者: 小溪儿1988    时间: 2015-11-24 09:37
岑兴灿 发表于 2015-11-21 20:49
哎,这个当然确认了,你一直没搞清楚我问的问题是什么

那你能详细描述下吗?
作者: amap_1377190375    时间: 2016-2-22 11:14
我的SHA1  都是正确的 而且 包名也正确 我的KEY值复制过来的 配置也正确 为什么还会有Key鉴权失败
作者: 小溪儿1988    时间: 2016-2-23 20:35
amap_tel_561b766559e0f90549 发表于 2016-2-22 11:14
我的SHA1  都是正确的 而且 包名也正确 我的KEY值复制过来的 配置也正确 为什么还会有Key鉴权失败 ...

你把配置文件给我看下。或者看看 这个key 是否可以使用在android SDK上。
作者: amap_1585575963    时间: 2016-3-18 11:30
你好
定位的demo怎么能跑起来啊
作者: amapipUTbEKY    时间: 2016-3-19 12:04
你好,我把发布以及调试的SHA1都设置好了,package也没有问题。
用的是高德的demo工程,android studio环境。
编译运行时调用地图定位显示:
定位失败
错误码:7
错误信息:KEY错误
错误描述:auth fail:INVALID_USER_KEY

请问是我漏掉了什么吗?
谢谢~
作者: amap_1525181755    时间: 2016-6-14 16:10
厉劫 发表于 2016-3-19 12:04
你好,我把发布以及调试的SHA1都设置好了,package也没有问题。
用的是高德的demo工程,android studio环境 ...

请问你解决了嘛?我也是同样的问题
作者: amapuZgV24n8    时间: 2016-11-23 15:23
我的定位很慢,错误日志
http://apilocate.amap.com/mobile ... 2103&output=bin  
这个是高德什么接口返回的是{"status":"0","info":"INVALID_USER_KEY","infocode":"10001"}





欢迎光临 高德开发者论坛 (https://lbsbbs.amap.com/) Powered by Discuz! X3.2