如何解决谷歌地图“服务器验证失败”的问题?

2024-01-08

我已经打印了我的 SHA1 密钥:

keytool -list -v -keystore keystore.jks

在 Google Console 中生成 API 密钥,

更新了清单文件如下:

<meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyC1YOsomestringsarehiddedLu5_TnCxlyuRM"/>

然后我创建了一个简单的Activity如 Google 示例中所示:

public class MapActivity extends FragmentActivity implements OnMapReadyCallback {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_sample);

    SupportMapFragment mapFragment =
            (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap map) {
    map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}

}

当然,我在清单文件中添加了活动。我总是遇到同样的错误。

Ensure that the following Android Key exists:
API Key: AIzaSyC1YOn9myapikeystringsxxu5_TnCxlyuRM
Android Application (<cert_fingerprint>;<package_name>):
B2:E8:75:4F:01:DD:xx:xx:xx:xx:xx:xx:74:A5:85:2C:A4:38:48;md.mycompany.catalog

奇怪的是,我粘贴到 Google Console 中的 SHA1 密钥与上面的不一样。我再次尝试,它仍然显示另一个 SHA1 密钥。我什至尝试了这个 SHA1,但仍然不起作用。

附注我将 Youtube API 集成在同一个应用程序中,并且使用相同的 KEY 一切都运行良好。


从评论中,您指出您是从应用程序的发布版本构建密钥的,但错误消息表明您正在本地进行测试,这也表明您正在使用 APK 的调试版本进行测试。

由于 SHA1 密钥因版本和调试而异,因此您可以将两个密钥保留在清单中,但在本地测试时注释掉发布版本密钥。就像这样:

编辑(2016 年 4 月 28 日)- 对于 Android Studio 和构建风格,考虑到您可以指向给定构建类型(调试或发布)和风格的不同字符串,这种技术是不必要的。我现在会推荐andorid:value="@string/maps_v2_api_key"而不是硬编码本身。

buildTypes {
   release {
    resValue 'string', 'maps_v2_api_key', '"123...xyz"'
   }
   debug {
    resValue 'string', 'maps_v2_api_key', '"345...vut"'
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决谷歌地图“服务器验证失败”的问题? 的相关文章

随机推荐