2015-09-10 12 views
5

Mam wydrukowane mój klucz SHA1:Jak naprawić Mapy Google "Uwierzytelnianie nie powiodło się na serwerze"?

keytool -list -v -keystore keystore.jks 

wygenerowany klucz API w konsoli Google

zaktualizowany plik manifestu następująco:

<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"/> 

Potem stworzył prostą Activity jak w Przykłady 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")); 
} 

}

I oczywiście dodałem aktywność w pliku Manifest. Zawsze mam ten sam błąd.

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 

Dziwne jest to, że klucz SHA1 które wklejone w konsoli Google nie jest taki sam jak ten powyżej. Spróbowałem ponownie i nadal pokazuje kolejny klucz SHA1. Próbowałem nawet tego SHA1 i nadal nie działa.

p.s. Mam zintegrowane API Youtube w tej samej aplikacji i wszystko działa idealnie, z tym samym KEY.

+2

Generujesz klucz SHA1 z wersji Release lub wersji debugowania pliku APK - będą się różnić. – ElliotM

+0

Klucz Release.Ale działa z interfejsem API Youtube – FilipLuch

+1

Jeśli tak jest, to wygląda na to, że otrzymujesz błąd z konsoli Android Studio - co sugeruje, że testujesz swój klucz (Release) za pomocą wersji debugowania aplikacji. Domyślam się (problem, z którym osobiście się spotkałem), że po zbudowaniu wersji pakietu APK nie zobaczysz błędu. – ElliotM

Odpowiedz

4

Z komentarzy podanych przez Ciebie, że zbudowałeś klucz z wersji Release aplikacji, ale komunikat o błędzie sugeruje, że testowałeś lokalnie, co również sugerowałoby testujesz w wersji debugowania pliku APK.

Ponieważ klucz SHA1 różni się od dopuszczenia do debugowania, można zachować oba klawisze w swoim manifeście ale wykomentuj przycisk zwalniający podczas testowania wersji lokalnie. Tak:

enter image description here

Edit (28 kwietnia 2016) - w Android Studio i budować smaków, technika ta jest zbędne biorąc pod uwagę można zwrócić się do różnych ciągów podanych do buildType (debug lub Release) i smak. Chciałbym teraz polecić andorid:value="@string/maps_v2_api_key" zamiast twardego kodowania jako takiego.

buildTypes { 
    release { 
    resValue 'string', 'maps_v2_api_key', '"123...xyz"' 
    } 
    debug { 
    resValue 'string', 'maps_v2_api_key', '"345...vut"' 
    } 
} 
1

Klucze do wersji wydania i debugowania będą inne. Możesz również mieć tyle smaków, ile możesz. Sprawdź to w lewym menu (rogu) Android Studio, o nazwie BuildVariants

+0

Zmieniłem na wersję rozwojową i dodano magazyn kluczy podpisujących z poświadczeniami, ale pokazuje mi ten błąd: 'app-release-unsigned.apk nie jest podpisane. Skonfiguruj informacje o podpisie dla wybranego smaku, korzystając z okna dialogowego Struktura projektu. " – FilipLuch

+0

Może lepiej pomożemy, jeśli pokażesz nam swój plik gradowy. Jeżeli masz tam 'buildTypes { uwolnienia { minifyEnabled fałszywe proguardFiles getDefaultProguardFile ('PROGUARD-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { minifyEnabled fałszywe signingConfig signingConfigs .debug } } ' –

+0

dziękuję, dodałem' signingConfig signingConfigs.mysigningname' i zostało pomyślnie zbudowane. Ale niestety nie pokazuję mapy. Nie widzę żadnego błędu. Spróbuję z debugowanym plikiem kluczy. – FilipLuch

0

miałem podobny problem, dla mnie poprawka została po prostu dodać usługi Google Play w Android SDK i następnie kierownika zregenerować klucz API.

2

Mam ten sam problem spędziłem dwa tygodnie, aby uzyskać rozwiązanie w końcu mam to. po prostu usuń klucz z res/values ​​/ google_maps_api.c i odśwież go o nowy klucz wykonaj poniższe kroki, aby uzyskać nowy klucz.

1> Find SHA1 by Using that command in command prompt: 

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

2> Get Package name from android manifest and use finger print of SHA1 for create an new api key 


3> copy created key and past it in res/values/google_maps_api.xml and also past in android manifest 

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">Paste Here New Api</string> 
</resources> 

<meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="Paste Key Here" /> 
Powiązane problemy