5
votes

Impossible de résoudre le symbole default_web_client_id GoogleSignInOptions Android Firebase

Mon projet fonctionne bien pendant les six derniers mois et l'application dans le Play Store. Pour une mise à jour, je rouvre le projet montre default_web_client non résolu pour le morceau de code suivant.

W/GoogleActivity: Google sign in failed
    com.google.android.gms.common.api.ApiException: 12500: 
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source) 

J'essaye les méthodes suivantes,

1.Nettoyer et reconstruire

2.Vider le cache et redémarrer

3 .Définissez getString (R.string.default_web_client_id) comme une chaîne vide et exécutez le projet pour générer un fichier

app/build/generated/res/google-services/{build_type}/values/values.xml

comme instruction de ce lien

4.Remplacez la chaîne vide par getString (R.string.default_web_client_id)

Maintenant, je suis capable d'exécuter le projet et aussi de prendre la version release. Mais toujours, impossible de résoudre le symbole default_web_client_id.

Toute mise à jour serait utile ...

NB: L'ajout direct de oauth_client-> client_id entraînera une erreur

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();


9 commentaires

Vérifiez ceci .


@AlexMamo J'essaye aussi ça mais je tombe en panne au démarrage de l'application


Avec quelle erreur?


@AlexMamo Maintenant, il ne montre aucun plantage après la désinstallation et l'installation


Avez-vous également essayé de transmettre le clientID comme argument au lieu de R. string.default_web_client_id) ?


@AlexMamo ya oauth_client-> client_id


Et quel est le comportement?


@AlexMamo a obtenu l'erreur ApiException: 12500: at com.google.android.gms.common.internal.ApiExceptionUtil.from‌ Statut


@AlexMamo Une mise à jour ??


6 Réponses :


5
votes

J'ai le même problème que vous. Après la mise à jour du studio Android, il obtient une erreur. Il n'y a pas besoin de réparer, car Google essaie de rendre votre application de plus en plus sécurisée. Si vous essayez de créer une autre valeur pour default_web_client_id, il affichera la variable dupplicate d'erreur. Pour trouver la valeur de default_web_client_id * Changez de mode pour Projet -> app -> build -> généré -> google-services -> debug -> values ​​-> values.xml. Donc, cela ne cause aucune erreur lors de la compilation, vous n'avez pas besoin de le réparer. Laisser google résoudre le problème plus tard: D


0 commentaires

6
votes

J'ai mis à jour la version des services Google avec la dernière version de build.gradle au niveau du projet et j'ai bien fonctionné

classpath 'com.google.gms:google-services:4.2.0


0 commentaires

2
votes

J'ai le même problème avec mon code également

.requestIdToken(*My New Client Id*)

J'ai essayé clientID comme argument au lieu de R.string.default_web_client_id)

W/System.err: com.google.android.gms.common.api.ApiException: 12500:

et récupérez ce qui suit dans le code de débogage

.requestIdToken(*My Client Id*)

J'ai mis à jour les services Google vers la dernière version du projet build.gradle (google-serivces: 4.2.0)

! La solution qui a fonctionné pour moi!

  1. Connectez-vous à la Developer Console

  2. Identifiants> Créer des identifiants> Clé API

  3. Téléchargez le nouveau google-services.json depuis Firebase (Présentation du projet> Utilisateurs et autorisations> Général faites défiler vers le bas
  4. Charger le nouveau google-services.json dans l'application Project>
  5. Remplacez l'ID client par un nouveau généré à partir de google-services.json oauth_client> client_id Remarque: utilisez l'ID client avec le client_type 3
Cannot resolve symbol 'default_web_client_id'

6.Exécutez votre application :)


4 commentaires

Aussi juste à noter, default_web_client_id est dans le values.xml


Qaleem Hussain: comment accéder par programme à l'ID client Web par défaut dans les valeurs, xml?


Affichage des packages> application> valeurs> values.xml


non, je veux dire PROGRAMMATIQUEMENT, en code JAVA comme: getResources.getString (R.string.STRING_ID);



1
votes

Cela a fonctionné pour moi:

  1. Accédez à la Google API Console et sélectionnez le projet souhaité

  2. Regardez les ID client OAuth 2.0. Si vous ne disposez pas déjà de l'API du client Web, créez-en une, tapez Client Web, vous devez en créer une. entrez la description de l'image ici

  3. Accédez à la console Firebase, aux paramètres du projet et téléchargez le fichier google-service.json

  4. Remplacez le fichier google-service dans votre projet.

  5. Essayez de compiler. Cela vaut peut-être la peine de nettoyer le projet ou même le cache. S'il échoue toujours, alors soit:

    • vous n'appliquez pas correctement plug-in de services Google à votre projet fichier de note
    • le google-service-plugin ne génère pas la ressource car il ne trouve pas l'ID par défaut. Cela m'est arrivé, je ne sais pas pourquoi.

      Le web_default_client est généré à partir de la clé de type 3, à l'intérieur de l'élément oauth_client. Voici comment le fichier json devrait être pour com.google.gms:google-services:4.3.2:

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(<put here the Oauth client ID for Web Application type>) but is not good if you have different firebase projects at different flavors.

S'il ne contient pas le nœud client_type 3 dans le tableau, ajoutez-le.

Un moyen beaucoup plus simple consiste à transmettre directement l'identifiant du jeton, comme ceci:

"oauth_client": [
        {
          "client_id": "...",
          "client_type": 1,
          "android_info": {
          "package_name": "...",
          "certificate_hash": "..."
        }
      },
    {
      "client_id": "<put here the Web type Oauth cliend id>,
      "client_type": 3
    }
]

Remarques:

  • Firebase crée automatiquement un ID OAuth de type Web nommé "Client Web (créé automatiquement par le service Google)". Impossible de le faire recréer à partir de Firebase.
  • Les identifiants OAuth de type Android sont créés automatiquement lorsque vous ajoutez une nouvelle empreinte digitale à votre projet Firebase.


0 commentaires

0
votes

Avant de faire quoi que ce soit, j'ai téléchargé le fichier google-services.json le plus récent à partir de Firebase> Paramètres du projet et l'ai remplacé par celui du dossier du projet. Reconstruisez le projet et il est parti.


0 commentaires

0
votes

J'ai uniquement ouvert res (generated)> values> values.xml et rien de plus, l'erreur s'est terminée.

xxxxxxxx.apps.googleusercontent.com


0 commentaires