web-dev-qa-db-fra.com

Impossible de charger la carte. Erreur de contact avec les serveurs Google. Il s'agit probablement d'un problème d'authentification

Je recherche tous les jours et je ne trouve pas la réponse ...

tout est prêt, mais google map ne peut toujours pas apparaître sur le fragment avec l'onglet

Je vérifie que j'active déjà google map Android v2 et droit API_KEY

Je n'ai aucune idée de ce qui s'est passé!

img

MainActivity.Java:

public class MainActivity extends FragmentActivity implements
        ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;

    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String titles[] = { this.getString(R.string.title_around),
                this.getString(R.string.title_map),
                this.getString(R.string.title_favorite),
                this.getString(R.string.title_achievement), };

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mSectionsPagerAdapter = new SectionsPagerAdapter(
                getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);
        mViewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);
                    }
                });

        for (int i = 0; i < titles.length; i++) {
            actionBar.addTab(actionBar.newTab().setText(titles[i])
                    .setTabListener(this));
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // TODO 在這邊決定哪個位置要給什麼 View(Fragment)
            Fragment fragment = null;
            // TODO 建議先在之前就初始化好 4 個 Fragment
            switch (position) {
            case 0:
                fragment = new AroundFragment();
                break;
            case 1:
                fragment = new MapsFragment();
                break;
            case 2:
                fragment = new FavoriteFragment();
                break;
            case 3:
                fragment = new AchievementFragment();
                break;
            default:
                break;
            }

            return fragment;
        }

        @Override
        public int getCount() {
            return 4;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            // TODO 在這邊決定每一個 View 的 title
            switch (position) {
            case 0:
                return getString(R.string.title_around);
            case 1:
                return getString(R.string.title_map);
            case 2:
                return getString(R.string.title_favorite);
            case 3:
                return getString(R.string.title_achievement);
            }
            return null;
        }
    }

}

MapsFragment.Java:

public class MapsFragment extends Fragment{
    static final LatLng NKUT = new LatLng(23.979548, 120.696745);
    private GoogleMap map;
    SupportMapFragment mMapFragment;
    public MapsFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.map_fragment,container, false);

        map = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

         mMapFragment = SupportMapFragment.newInstance();
         FragmentTransaction fragmentTransaction =
                 getFragmentManager().beginTransaction();
         fragmentTransaction.add(R.id.map,mMapFragment);
         fragmentTransaction.commit();

        return rootView;

    }
}

Map_fragment.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <fragment
        Android:id="@+id/map"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        class="com.google.Android.gms.maps.SupportMapFragment" />

</RelativeLayout> 

Manifest.xml:

<!-- Google Map -->
<permission
        Android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"
        Android:protectionLevel="signature"/>
<uses-permission Android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"/>
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>

<!-- end -->
    <!-- Google Map API Key -->

    <meta-data
        Android:name="com.google.Android.maps.v2.API_KEY"
        Android:value="key" />

    <!-- end -->

Solution:

J'ai trouvé la solution !!!

Si vous utilisez un magasin de clés privé pour appliquer API_KEY. Vous ne pouvez pas télécharger et installer d'application avec Eclipse.

Vous devez télécharger le fichier .apk sur votre appareil par vous-même et l'installer!

Merci Tarsem et srikanth gr aide !!

31
JackWu

il semble que vous ayez un problème avec votre API_KEY qui est obtenu auprès de Google API Access, vérifiez donc votre API_KEY, empreintes digitales du certificat et nom du package

utilisez également ceci à l'intérieur <manifest>

<uses-feature
        Android:glEsVersion="0x00020000"
        Android:required="true" >
    </uses-feature>

et vérifiez également: <meta-data .... > devrait être à l'intérieur <application> tag


PS.

1. Essayez également en ajoutant l'autorisation suivante

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>

2.After changing API key dans AndroidManifest.xmlDoitClear Application Data

Pour effacer les données d'application:

Soit Allez à Settings>Application Manager>Select Your Application > Click on Clear Data

OMust Uninstall The Application avant installing it !Remarque Ne pas Re-install à moins que vous Completely Uninstall the Application afin de clear its Data completely

65
Tarsem Singh

J'ai passé tellement de temps, il y a trop de questions similaires.

J'ai essayé d'ajouter sa propre autorisation, l'autorisation WIFI_STATE, mais le vrai problème était dans les données d'application.

Après avoir modifié la clé API dans le manifeste, vous DEVEZ "Effacer les données" de votre application (ou la réinstaller complètement).

Cela m'aide et j'espère que ce message aidera quelqu'un.

35
Oleksii K.

Mon problème a été résolu en ajoutant une autorisation au manifeste:

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
10
G. Kh.

J'ai le même problème, et mon problème était que je n'ai pas activé le service dans la console:

  1. Accédez à la console: https://code.google.com/apis/console/
  2. Aller à la section des services
  3. Activer Google Maps Android API v2
  4. Suivez toutes les étapes de la documentacion
6
moskis

Si vous rencontrez un problème avec l'authentification, vérifiez dans Logcat le nom de votre package. Si vous utilisez Android Studio consultez votre build.gradle . Lorsque le fichier contient applicationIdSuffix '.dev'. Vous devez ajouter .dev au nom de votre package.

e.i. le nom du package est:

com.company.main

Dans la console API, écrivez

... 9S.ME.DA.FE; com.company.main.dev

5
Serafins

Après avoir fait tout ce que les gens ont dit aimer vérifier mon manifeste, ajouter des autorisations, créer une nouvelle clé avec le sha1 dans Eclipse, etc. et cela ne fonctionnait toujours pas, je viens de le faire:

adb uninstall com.example.hellomap

puis en exécutant à nouveau Eclipse. Il semblait que l'appareil n'obtenait pas de données complètement nouvelles. J'espère que cela t'aides.

4
ibpetr

J'ai pu utiliser la clé de débogage et charger depuis Eclipse. Il me manquait l'autorisation suivante dans mon AndroidManifest.xml

uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"
2
Dave

J'étais confronté au même problème dans Android Studio. Google maps ne s'affichait pas lorsqu'il était connecté au Android débogueur.

Je l'ai corrigé en ajoutant l'empreinte SHA1 pour le magasin de clés de débogage situé dans ~/.Android/debug.keystore. Je pense que ce fichier de clés est généré par défaut (pas sûr cependant).

La commande suivante dans Terminal a fonctionné pour obtenir l'empreinte SHA1:

keytool -list -v -keystore ~/.Android/debug.keystore 

Lorsqu'il vous demande un mot de passe, ne tapez rien, appuyez simplement sur Entrée. (A travaillé dans mon cas)

Ajoutez cette empreinte digitale à votre clé API pour les applications Android dans la console des développeurs.

À votre santé!

1
Abdullah Umer

J'ai résolu le problème en donnant l'autorisation dans le manifeste

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
1
Pramod J George

Après avoir examiné de nombreux cas et exécuté avec succès les cartes, il est important de garder ces éléments à l'esprit:

  • Utilisez Android api 17, émulateur de stand et projet
  • Référencez les services google
  • Utilisez le Android support si nécessaire
  • Utilisez l'ordre suivant dans les bibliothèques: src, gen, google apis, Android support, dépendances et bibliothèques privées
  • Utilisez une clé api correcte
  • Effacer les données, réinstaller l'application.
1
user2526136

J'avais configuré de nombreux services, notamment l'API Google Maps v2 (et non Google Maps Android API v2) qui était en conflit. Après avoir supprimé le service indésirable et généré une nouvelle clé, y compris dans le manifeste, une nouvelle installation, la carte est apparue sur l'appareil.

1
Kulai

J'ai également rencontré le même problème lors de l'utilisation de Android Studio.

J'ai renvoyé toutes les solutions, mais cela ne fonctionnait toujours pas.

Le problème était que j'avais changed mon package name après la configuration initiale du projet. La modification du nom du package s'est reflétée dans Manifest, mais dans build.gradle fichier l'ancien nom du package était là.

Dès que j'ai changed package name dans build.gradle, Map commence à fonctionner.

J'espère que cela aide quelqu'un.

0
akshay

Beaucoup d'entre eux m'ont aidé mais le principal problème était que je n'avais pas la signature correcte. J'utilise Xamarin et, par conséquent, il n'est pas intégré à l'EDI, donc lorsque je générais la clé à l'aide de keytool, il n'entrerait jamais dans l'application. J'ai dû ajouter ce qui suit dans mon fichier .csproj:

<PropertyGroup>
   <AndroidKeyStore>True</AndroidKeyStore>
   <AndroidSigningKeyStore>maps.keystore</AndroidSigningKeyStore>
   <AndroidSigningStorePass>Android</AndroidSigningStorePass>
   <AndroidSigningKeyAlias>androiddebugkey</AndroidSigningKeyAlias>
   <AndroidSigningKeyPass>Android</AndroidSigningKeyPass>
</PropertyGroup>
0
user3591639

J'étais confronté au même problème. J'ai essayé plusieurs solutions - aucune n'a fonctionné pour moi. Ce qui a fonctionné pour moi a été de générer une nouvelle clé API et EFFACER les DONNÉES du service Google play sur mon appareil.

0
QuenelleMan

Mon erreur la plus étrange que j'ai faite jusqu'à présent a été d'obtenir le code SHA1 à partir de debug.keystore.

Je pensais qu'il n'avait pas de mot de passe, mais le mot de passe était Android

Je ne sais pas si cela aide quelqu'un, mais cela m'a aidé. De plus, utilisez un nom de package complet, vous pouvez le trouver dans Java fichier de code source. Par exemple, il y a le mien: com.example.erikas.mapsdemo (ressemble à : package com.example.erikas.mapsdemo;)

Donc, lorsque vous essayez d'obtenir une clé API, utilisez une entrée comme celle-ci:

XX:XX:XX:XX:XX:17:C9:22:BB:BD:7C:87:12:83:2D:XX:XX:XX:XX:XX;com.example.erikas.mapsdemo

Donc ma propre erreur était un mauvais code SHA1 et un mauvais paquet. Mais heureusement - je l'ai compris après 2 jours de maux de tête! :RÉ

0
Erikas

J'ai eu le même problème. J'ai vérifié les journaux et il a été dit "Échec de l'authentification sur le serveur". J'ai donc vérifié www.console.developers.google.com et découvert que le nom du package était incorrect. (Ce nom de paquet a été écrit automatiquement) Je l'ai écrit correctement et tout fonctionne bien.

0
Mikheil Zhghenti

L'erreur pour moi était que j'exécutais la configuration de débogage lorsque je viens d'ajouter la configuration de la version à la Google Developers Console. J'ai donc suivi ces étapes:

  1. Obtenez le sha1 pour votre keystore de débogage en utilisant:

    keytool -list -v -keystore ~ ​​/ .Android/debug.keystore -alias androiddebugkey -storepass Android -keypass Android

  2. Goto https://console.developers.google.com et ajoutez le package sha1 +.

  3. Ajoutez votre API_KEY à votre fichier AndroidManifest.xml.

0
Israel Varea

Tout ce que vous avez à faire est de: utiliser la clé de débogage dans votre code; désinstaller l'application; installez la nouvelle application avec la clé de débogage.

0
Umberto

Dans mon cas, ce qui a fonctionné, c'est que j'ai dû l'installer via la ligne de commande:

adb install /path/to/app/MyApp.apk

0
mt0s

Lors du débogage, j'ai dû ajouter une clé API supplémentaire pour le ~/.Android/debug.keystore

Ce magasin de clés est configuré automatiquement pour vous et le mot de passe est "Android"?

0
user3455805

J'ai fait face au même problème, j'ai une solution pour cela, j'ai essayé de créer une clé api de débogage à partir de différents comptes Google avec le même nom de package. Étape pour éliminer le bogue: 1.Retirez la clé API indésirable avec le même nom de package dans un compte Google différent. 2.Veuillez conserver la génération de clés Api dans un seul compte pour résoudre ce problème. Merci. Essaye ça.

0
MohanRaj S

Dans IntelliJ ..si vous êtes sûr que vous SHA1 la touche est correcte, API key ne manque pas,

Permission et toute configuration dans Manifest est correcte.

Peut-être que vous devez clic droit sur votre Google-Play-Services-lib et le compiler à nouveau

J'ai fait toutes les choses et cela fait l'affaire pour moi.

0
Jongz Puangput

J'étais coincé sur cette question pendant environ une semaine. J'ai donc commencé à utiliser un véritable appareil. Mais un jour, j'essaie de définir le magasin de clés de débogage Custon (Eclipse, Fenêtre -> Préférences -> Android -> Build -> Magasin de débogage Cusom) sur le même que celui par défaut. Et tout fonctionne Bien sûr, j'ai d'abord une clé sur une console Google.

J'espère que cela vous aidera!

0
patriot10

Au cas où, si rien (indiqué ci-dessus) ne fonctionnait, il y avait une bonne possibilité que vous utilisiez un mauvais fichier debug.keystore pour générer une empreinte digitale. Si vous avez plusieurs fichiers debug.keystore sur votre ordinateur, assurez-vous que vous utilisez le bon debug.keystore pour générer l'empreinte SHA1.

0
Kaps

Liste de contrôle: 1. Vérifiez l'autorisation dans Android Manifest for READ_GSERVICES

<uses-permission Android: name = "com.google.Android.providers.gsf.permission.READ_GSERVICES" />

  1. Effacez les données d'application si vous avez apporté des modifications au manifeste.

  2. Vérifiez debug.keystore dans votre dossier .Android.

    Mon problème a été résolu simplement en remplaçant debug.keystore situé dans le dossier .Android par debug.keystore de votre application.

0
user3804372