高德地图KEY鉴权失败

under 高德地图  tag     Published on April 15th , 2021 at 08:33 pm

前几天打包项目后发现,定位出现KEY鉴权失败的问题!据了解,一般在项目被转移,或项目使用的SDK被其他项目使用时,才会发生这种情况!

主要是找到 SHA1! 然后更新 KEY!

解决办法

一、用命令查找

1、在电脑里找到keytool.exe文件

1.png

2、cmd进入

2.png

3、输入 keytool -list -keystore .jks文件所在目录

如果没有出现输入密钥库口令:这行字说明 .jks 文件路径有问题。
如果出现,不需要做其他操作,直接回车。

3.png

4、回车后会出现SHA1,这是申请高德SDK所必需要的。

4.png

二、用方法查找

当返回 INVALID_USER_SCODE(不是INVALID_USER_KEY哦),或错误码 1008327,可按照如下操作解决问题:

官方详细操作

public static 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[i])
                .toUpperCase(Locale.US);
            if (appendString.length() == 1)
                hexString.append("0");
                hexString.append(appendString);
                hexString.append(":");
        }
        String result = hexString.toString();
        return result.substring(0, result.length()-1);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return null;
}

5、在高德开放平台中的控制台里,把获取到的 SHA1 复制到图中位置。
5.png

6、复制 key。

6.png

7、回到 Android Studio,打开 AndroidManifest.xml,把复制到的 key 粘贴到 value 里,重新编辑项目,基本没问题。如果还不行,要检查一下 keystore,很可能自定义过。

7.png

查看自定义的 keystore

在项目上右击,找到 Open Module Settings,点进去。或者直接按 F4 也行。

8.png

都打包时用到的,确认完之后再打包使用不会出现 KEY鉴权失败了。

9.png


本文由 surface 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:October 15th , 2021 at 05:40 pm
分享到:Twitter  Weibo  Facebook