web-dev-qa-db-fra.com

"Une erreur interne s'est produite" avec l'intégration de Google Plus Login.

J'essaie d'intégrer un identifiant Google plus dans mon application conformément aux instructions fournies par le lien suivant: https://developers.google.com/+/quickstart/Android#install-sdk

Je suis toutes les instructions parfaitement. Et lorsque je lance l’exemple d’application sur un périphérique réel fourni dans le sdk Android et que je clique sur le bouton signin, il affiche un message Toast indiquant que An internal error occurred

Qu'est-ce que je fais mal?

42

Cela peut se produire lorsque vous n'avez pas défini la signature de l'ID client dans votre projet de console d'API ou si vous avez copié la valeur de clé incorrecte à partir de keytool. Cette opération est documentée dans les étapes du guide de démarrage rapide des étapes 7, 8, 9 et 10.

31
Vic Fryzel

J'ai ce problème et même après avoir créé 10 identifiants de client différents avec SHA et nom de package différents, cela ne fonctionne pas ... jusqu'à ce que j'ai découvert que vous devez remplir le Consent screen.

Selon GoogleDevelopers Console -

L'écran de consentement sera montré aux utilisateurs chaque fois que vous demanderez un accès à leurs données privées en utilisant votre identifiant client.

Consent screen

86
mjosh

J'ai résolu le problème en supprimant .setScopes("PLUS_LOGIN") dans PlusClient.Builder.

16
marcogramy

J'ai eu cette erreur de message de pain grillé dans mon application Android:

An internal error occurred

Résumé:

En supposant que vous ayez commis une erreur en configurant la négociation entre votre application Android et le serveur API Android vous accordant l'accès. Cela est probablement dû au fait que vous n'avez pas ajouté le nom du package ou l'empreinte SHA1 correcte. J'ai suivi ces étapes pour éliminer la mauvaise configuration et la faire correctement. 

Étapes à suivre:

  1. Accédez à votre console Google Api et connectez-vous: https://code.google.com/apis/console

  2. Cliquez sur l'onglet "Accès à l'API".

  3. Cliquez sur le bouton "Créer un autre ID client".

  4. Choisissez: Bouton "Application installée".

  5. Choisissez: bouton radio "Android".

  6. Entrez le nom du package de l'application Android qui affiche l'erreur ci-dessus. Vous pouvez le trouver défini en haut du fichier de code PlusSampleActivity.Java. Pour moi, c'est com.google.Android.gms.samples.plus

  7. Acquérir votre valeur d'empreinte digitale SHA1:

    une. Utilisez la commande keytool -list -v -keystore /home/el/.Android/debug.keystore. Entrez le mot de passe. Si vous ne le définissez jamais, le mot de passe par défaut est "Android". 

    b. L'empreinte digitale SHA1 est affichée à l'écran, copiez-la.

  8. Collez la valeur ci-dessus dans la zone "Signature du certificat de signature du certificat (SHA1):".

  9. Cliquez sur le bouton "Créer un ID client".

  10. Exécutez à nouveau votre application Android, cliquez sur "Connexion".

À présent, une activité vous permettant de "vous connecter à Google+ SDK avec Google" vous est présentée.

10
Eric Leschinski

Dans mon cas, la solution consistait en fait à définir une adresse électronique dans l'écran de consentement. Premièrement, j’étais un peu réticent à choisir mon adresse personnelle et pour une raison étrange, vous pouvez enregistrer le formulaire sans cette donnée sans erreur. Après avoir vérifié ce que d’autres ont suggéré, dès que j’ai inscrit mon adresse électronique dans ce formulaire, cela a commencé à fonctionner.

4
Alex FJ

J'ai cherché comment résoudre ce problème pendant une journée riche en recherches, mais sans succès, j'ai finalement réussi à résoudre ce problème avec l'approche suivante.

Avant de commencer à résoudre ce problème (au moins comment cela a fonctionné pour moi), je dois dire que tout ce qui se trouve sur la documentation Est correct et que vous ne devez modifier aucune ligne de code, etc. ... d'un bogue dans la https://cloud.google.com/console console cloud 

Tout d’abord, assurez-vous que vous disposez du SHA1 correct et du nom de package de votre projet, comme indiqué dans la documentation https://developers.google.com/+/quickstart/Android

Maintenant, ce bug, comme je l’ai remarqué (du moins pour moi), est que dans ma console cloud, le projet que j’ai créé Était depuis longtemps avec l’ancienne interface et j’ai migré il ya quelques mois vers la nouvelle interface utilisateur graphique. Sur la console en nuage, vous remarquerez que les nouveaux projets ont automatiquement généré un ID de projet comme ceci atlantean-ares-331 alors que les anciens projets avaient une valeur entière longue comme un ID de projetqui n'est pas visible. Ainsi, si votre projet a été créé avec l'ancienne interface graphique et que vous venez de créer un nouvel ID client pour OAuth pour ce projet, vous obtiendrez le Toast "Une erreur interne s'est produite" lors de la tentative de connexion à Google.

Comment réparer

  1. Allez sur votre console cloud 
  2. Faire un projet new, je suggérerais un nom comme Oldprojectname-gplus
  3. Dans la section API, activez l'API Google+.
  4. Assurez-vous que aucun de vos projets n'a le même nom de package sur Identifiant client OAuth avec celui que vous utiliserez maintenant, sinon vous obtiendrez ErrorThis client ID is globally unique and is already in use. (Vous devrez supprimer l'ancien client OAuth. id avec le même nom de paquet que vous allez utiliser maintenant).

  5. Accédez à Informations d'identification Créer un nouvel ID client pour OAuth.

Application installée 

Android

Entrez le nom du paquet de votre projet et votre SHA1

Terminé

3
Thano

Ma solution au problème était la suivante. 

J'ai fait tout ce que les autres ont recommandé et il n'y avait aucune faute de frappe concernant le nom du paquet et la clé SHA1. J'ai aussi essayé d'enlever la clé puis de l'ajouter à nouveau, mais cela n'a pas aidé.

Ce qui vous a aidé, c’est de retirer la clé et de créer un projet newhttps://code.google.com/apis/console ), puis de créer à nouveau l’ID client (avec package + sha1). . Après cela (5 secondes), tout a fonctionné sur mon appareil Android.

2
Zsolt Safrany

Dans mon cas, le problème était que j'ai changé le nom du paquet de l'application et que je ne l'ai pas mis à jour dans la console dev.

1
Ilya Gazman

Ce problème est lié aux autorisations de la console de l'API.

si vous utilisez une autorisation liée à SCOPE_PLUS_LOGIN, vous devez créer deux clés dans la console api, l'une pour l'ID client OAuth et l'autre pour la clé api publique.

1
Oscar Calderon

J'ai eu le même problème lorsque j'ai utilisé SHA1 pour debug.keystore pour le débogage, puis exporté mon application en oubliant de générer SHA1 pour le magasin de clés que j'avais utilisé pour exporter mon application. 

0
makuno

N'oubliez pas d'utiliser le magasin de clés de débogage intégré pour les tests. Tout fonctionnait correctement, mais j'avais défini mon empreinte digitale SHA1 de magasin de clés dans les informations d'identification de la console des développeurs, ce qui l'empêchait de fonctionner.

0
MikkoP

Quelque chose est souvent négligé est le nom du paquet. J'aimerais clarifier l'étape 6 d'Eric Leschinski ci-dessus (je ne peux pas en parler): le package requis n'est pas le package d'une activité, mais le package du manifeste de votre application.

Vous pouvez récupérer la valeur correcte à partir de l'élément racine de AndroidManifest.xml:

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.ntk.darkmoor"
    Android:versionCode="1"
    Android:versionName="1.0" >

Dans cet exemple, définissez "com.ntk.darkmoor" lors de la création de l'ID client

0
nikos.t

Je me suis tourné vers Google IO 2013 et j'ai modifié l'initialisation de PlusClient, puis cela a fonctionné.

public static final String AUTH_SCOPES[] = {
    Scopes.PLUS_LOGIN,
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/developerssite" };

mPlusClient = new PlusClient.Builder(this, this, this)
    .setScopes(AUTH_SCOPES)
    .build();
0
Tushu

La recréation du projet dans la console Google a fonctionné pour moi après plusieurs autres tentatives:

Pour une raison quelconque, mon projet n'avait pas d'identifiant de projet (ancienne console/nouvelle console?).

Comme Thano (ci-dessus) l’a suggéré, j’ai créé un tout nouveau projet, créé des identifiants de client, ... puis travaillé. Merci pour le conseil!!

0
user2996950

Pour moi, c’est que j’essayais d’utiliser ma clé de production lors de son installation à l’aide de ma clé de débogage. Assurez-vous d’utiliser le bon SHA1 du bon magasin de clés.

0
jcaruso

Merci Thano pour la solution "Ce bogue que j’ai remarqué (du moins pour moi) est que, dans ma console de cloud, le projet que j’ai créé était il y a longtemps avec l’ancienne interface et j’ai migré vers la nouvelle interface graphique il y a quelques mois. .Une fois que vous obtenez le nouveau look sur la console cloud, vous remarquerez que les nouveaux projets ont un identifiant de projet généré automatiquement comme ceci atlantean-ares-331, tandis que les anciens projets ont une valeur entière longue comme identifiant de projet qui n'est pas visible. créé avec l'ancienne interface graphique et que vous venez de créer un nouvel identifiant client pour OAuth pour ce projet, vous obtiendrez le Toast "Une erreur interne s'est produite" lors de la tentative de connexion à Google. "

0
psikario

Si vous faites face à cette erreur lorsque vous essayez d’exécuter l’exemple d’application "ou" copiez le projet que vous avez créé sur une autre machine qui s’exécutait avec succès et générait une telle erreur contextuelle sur l’autre machine sur laquelle vous essayez de fonctionner, vous pouvez suivre la méthode ci-dessous et cela vous aidera.

Si vous construisez l'application à des fins de test/débogage,

1. Générez le nouveau SHA1 si vous copiez votre projet et l'exécutez sur un autre ordinateur pour le nom du package et le chemin fourni pour le magasin de clés.

2.Changez le ClientId dans la console de développement pour le nouveau SHA1 généré et exécutez-le sur le nouvel ordinateur sur lequel vous avez copié le projet et essayez de l'exécuter.

0
ManishSB