J'essaie d'implémenter la connexion à Google dans mon application Android connectée à Firebase. Lorsque je lance l'application et que je clique sur le bouton Connexion de Google, rien ne se passe. Et je reçois cette erreur dans onActivityResult: Status {statusCode = DEVELOPER_ERROR, resolution = null} .
Mon code ressemble à ceci:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()){
GoogleSignInAccount account = result.getSignInAccount();
String emailAddres = account.getEmail();
getGoogleQAuthToken(emailAddres);
}
}
}
private void getGoogleQAuthToken(final String emailAddres){
AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() {
String errorMessage = null;
@Override
protected String doInBackground(Void... params) {
String token = null;
try {
String scope = "oauth2:profile email";
token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope);
} catch (IOException transientEx) {
errorMessage = "Network error: " + transientEx.getMessage();
} catch (UserRecoverableAuthException e) {
Intent recover = e.getIntent();
startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN);
} catch (GoogleAuthException authEx) {
errorMessage = "Error authenticating with Google: " + authEx.getMessage();
}
return token;
}
J'ai ajouté le fichier de configuration JSON dans app/directory et ajouté des dépendances:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:1.5.0-beta2'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:23.1.+'
compile 'com.firebase:firebase-client-Android:2.3.0+'
/* For Google Play Services */
compile 'com.google.Android.gms:play-services-safetynet:8.3.0'
compile 'com.google.Android.gms:play-services-auth:8.3.0'
compile 'com.google.Android.gms:play-services:8.3.0'
compile('com.afollestad.material-dialogs:core:0.8.3.0@aar') {
transitive = true
}
/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.2.2'
compile 'com.Android.support:cardview-v7:23.1.+'
compile 'com.Android.support:recyclerview-v7:23.1.+'
compile 'com.Android.support:design:23.1.+'
}
apply plugin: 'com.google.gms.google-services'
Je cherche déjà des heures de solution ...
DEVELOPER_ERROR
signifie que les services Google Play n'ont pas pu trouver un client correspondant à partir de la console en fonction de votre SHA1 et du nom du package. Vous pouvez ajouter des SHA1 dans la page des paramètres de la console Firebase pour un nom de package donné, ou ajouter un nouveau nom de package via le bouton Ajouter Firebase à votre application Android.
En général, certaines choses à vérifier:
Si Signature de l'application Google Play est activé pour votre application, votre clé de signature de version sera remplacée par celle du serveur googles avant la publication . Vous pouvez vérifier si elle est activée à partir du Google Play Console -> Release Management -> App Signing
.
Dans mon cas, je devais copier le SHA1 de la section "Certificat de signature d'application" et l'ajouter à la section Paramètres généraux des projets Firebase, régénérer le fichier json, l'ajouter au projet et reuploader l'apk. L'erreur a été résolue.
Le code d'erreur 10 est une valeur constante de CommonStatusCodes.DEVELOPER_ERROR
, ce qui implique que vous avez mal configuré votre projet
Ce que tu peux faire
vérifiez si SHA à partir de PlayStore Console et de Firebase Console sont identiques.
Copier SHA depuis la console Google Play
collez-le dans Firebase Console
Que pouvez-vous faire d'autre?
Afficher des messages significatifs en cas d’échec en anglais clair
// Google Sign In failed, update UI appropriately
Log.w(TAG, "Google sign in failed", e);
String messageToDisplay = "Authentication failed.";
switch (e.getStatusCode()) {
case CommonStatusCodes.API_NOT_CONNECTED: //17
messageToDisplay += "The client attempted to call a method from an API that failed to connect.";
break;
case CommonStatusCodes.DEVELOPER_ERROR: //10
messageToDisplay += "The application is misconfigured.";
break;
case CommonStatusCodes.ERROR: //13
messageToDisplay += "The operation failed with no more detailed information.";
break;
case CommonStatusCodes.INTERNAL_ERROR: //8
messageToDisplay += "An internal error occurred.";
break;
case CommonStatusCodes.INVALID_ACCOUNT: //8
messageToDisplay += "Invalid account name specified.";
break;
case CommonStatusCodes.SIGN_IN_REQUIRED: //8
messageToDisplay += "Please Sign In to continue.";
break;
}
Toast.makeText(LoginActivity.this, messageToDisplay,
Toast.LENGTH_SHORT).show();
J'ai eu le même problème. Qu'est-ce qui se passe est ce que vous avez un débogage SHA1 et libérer SHA1. Normalement, nous n’utilisons que SHA1 Debug et générons le .apk signé pour Google Play, mais lorsque nous utilisons Google sigin, vous devez entrer la version firebase de SHA1.
Pour afficher la version SHA1, utilisez la commande suivante:
keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name
Puis entrez ce SHA1 sur la Firebase
https://support.google.com/firebase/answer/7000104
Cette réponse SHA1:
Empreinte SHA-1 du certificat de magasin de clés
J'espère que je vous ai aidé.
J'ai eu le même problème et je l'ai fait fonctionner en procédant comme suit:
1. Ajoutez l'empreinte DEBUG_KEYSTORE SHA1 au projet Firebase. utilisez la commande suivante (MAC/LINUX)
keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.Android/debug.keystore
2. Générez maintenant un apk signé de votre projet. Le processus comprend la création d'un magasin de clés pour la version de votre application. Copiez le chemin du fichier .jks nouvellement généré.
3. Générez maintenant l'empreinte RELEASE_KEYSTORE SHA1 à l'aide de la commande suivante
keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME
4. Copiez le nouveau SHA1 à partir de la sortie et ajoutez-le sous une autre empreinte SHA1 dans la console de votre application Firebase.
Maintenant vous êtes prêt à partir! ---- Espérer! ça aide.
J'ai créé une nouvelle clé de débogage SHA1 en procédant comme suit et j'ai remplacé la clé SHA1 dans les paramètres de mon projet. cela a fonctionné pour moi.
- Ouvrez votre projet.
- Cliquez sur le menu Fichier -> Nouveau -> Cliquez sur Google -> Sélectionnez Activité Google Maps -> Cliquez sur Terminer. - Le studio Android générerait un fichier google_maps_api.xml automatique.
- Vous pouvez obtenir la clé de débogage SHA1 dans ce fichier.
Remplacez cette clé SHA1 dans les paramètres du projet, puis téléchargez le nouveau google-services.json
à partir des paramètres et remplacez-le dans votre projet car votre certificate_hash et votre client_id changeront.
Je pense que vous devez changer votre version de play-service.
Voir Firebase Android Codelab pour ajouter la dépendance Firebase Auth à votre fichier app/build.gradle.
Essayez de mettre à jour votre service de jeu graduellement comme ci-dessous:
/* For Google Play Services */
...
compile 'com.google.Android.gms:play-services:9.0.0'
...
L'application est mal configurée. Cette erreur n'est pas récupérable et sera traitée comme fatale. Le développeur doit ensuite consulter les journaux pour déterminer des informations plus exploitables.
Lors de la création de la clé OAuth, vous devez vous assurer que vous donnez le nom de package correct. Cela signifie le nom du paquet qui vient dans votre fichier manifeste.
Si vous utilisez plusieurs modules (par exemple, une bibliothèque telle que FirebaseUI-Android), assurez-vous que lors de la création de la clé, vous utilisez le nom du package à partir duquel vous demandez l'authentification Google.
Cliquez sur Ici (ligne de conduite du développeur Google) et créez un nouveau projet pour la console Firebase Ce lien est défini avec les paramètres par défaut.
J'ai eu le même problème. Après 2 jours de souffrances, j'ai constaté que ma version SHA1 était incorect (j'avais l'habitude de l'obtenir à l'aide de l'outil keytool sous Java/bin et cela m'a donné un mauvais SHA1. Probablement parce qu'Android Studio utilise maintenant son propre package Java et non le JDK) . Meilleure façon d’obtenir le corect SHA1 ici Empreinte SHA-1 du certificat de magasin de clés