谷歌地图插件授权问题

时间:2019-03-15 11:05:40

标签: flutter google-maps-android-api-2

尝试使用google maps plugin在Flutter项目中显示地图时,出现授权失败。

我收到此错误:

Authorization failure.  Please see 
https://developers.google.com/maps/documentation/android-api/start for how 
to correctly set up the map.
E/Google Maps Android API(11104): In the Google Developer Console 
(https://console.developers.google.com)
E/Google Maps Android API(11104): Ensure that the "Google Maps Android API 
v2" is enabled.
E/Google Maps Android API(11104): Ensure that the following Android Key 
exists:
E/Google Maps Android API(11104):   API Key: 
xxxxxxxxxxxxxxxxxxxxxxxxxx
E/Google Maps Android API(11104):   Android Application (<cert_fingerprint>; 
<package_name>): 

我想我遵循了这封信的指示。此处说是为了确保启用Google Maps Android API v2,但该API列表中不存在该API,我想它已在我启用的Android Maps SDK中重命名。

我添加了API密钥,并将其限制在Android应用程序中,并且占用了应用程序的空间。其他人有这个问题吗?

4 个答案:

答案 0 :(得分:0)

我面临同样的问题。

首先在Google中启用Android Map SDK https://console.developers.google.com/google/maps-apis/overview?project=studious-optics-233010

并确保您的设备可以上网。.

代码...

import 'dart:async';

import 'package:flutter/material.dart';

import 'package:google_maps_flutter/google_maps_flutter.dart';

 class MapDemo extends StatelessWidget {
 @override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
  home: MapTest(),
);
}
 }

 class MapTest extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return MapState();
}
 }

 class MapState extends State<MapTest> {
 Completer<GoogleMapController> _controller = Completer();

 static const LatLng _center = const LatLng(23.521563, -72.677433);

  void _onMapCreated(GoogleMapController controller) {
_controller.complete(controller);
 }

@override
 Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
  appBar: AppBar(
    title: Text("Map Demo"),
  ),
  body: Container(
    height: MediaQuery.of(context).size.height,
    width: MediaQuery.of(context).size.width,
    child: GoogleMap(
      initialCameraPosition: CameraPosition(target: _center, zoom: 10.0),
      onMapCreated: _onMapCreated,
    ),
  ),
);

}    }

答案 1 :(得分:0)

您可能需要检查以确保您具有所使用的API密钥上授权的正确SHA1指纹。请记住,应用程序的调试版本(通过模拟器或测试设备在Android Studio中进行测试时将是默认版本)与发布版本(您将发布到Google Play商店)的SHA1指纹不同。

您可以在单个API密钥上添加多个限制,以允许在同一API密钥上同时授权调试和发布SHA1。

可以找到找到发行版本的SHA1的步骤     此处:https://developers.google.com/maps/documentation/android-sdk/signup#release-cert

答案 2 :(得分:0)

您只需要转到Meteor methods并为Android启用MAP SDK API,请确保已启用您使用的所有其他sdk api(适用于ios,道路,地点等的MAP),否则,如果通过您的应用发出的呼叫不会获得授权

答案 3 :(得分:0)

1-转到https://console.developers.google.com/apis/credentials

2-调试证书的烙印

对于Linux或macOS:

$ keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

对于Windows:

$ keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

生产证书的烙印

$ keytool -list -v -keystore your_keystore_name -alias your_alias_name

3-限制使用Android应用程序 *添加您的应用程序ID *添加您先前生成的sha1

4-颤振干净

5-卸载应用程序并重建