J'essaie d'intégrer Google Sign In dans mon application. Je n'ai pas de serveur principal, je reçois simplement les détails du compte Google connecté dans mon application.
Je l'ai d'abord essayé en utilisant l' exemple de connexion Google mais j'ai eu une erreur (aucune modification de code effectuée à l'exception de l'impression du stacktrace ci-dessous). Je viens d'utiliser l'exemple SignInActivity car je n'ai pas de serveur back-end.
Exception com.google.android.gms.common.api.ApiException: 12500:
at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89) at android.app.Activity.dispatchActivityResult(Activity.java:7010)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6316)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Code
public class SignInActivity extends AppCompatActivity implements
View.OnClickListener {
private static final String TAG = "SignInActivity";
private static final int RC_SIGN_IN = 9001;
private GoogleSignInClient mGoogleSignInClient;
private TextView mStatusTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Views
mStatusTextView = findViewById(R.id.status);
// Button listeners
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);
findViewById(R.id.disconnect_button).setOnClickListener(this);
// [START configure_signin]
// Configure sign-in to request the user's ID, email address, and basic
// profile. ID and basic profile are included in DEFAULT_SIGN_IN.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
// [END configure_signin]
// [START build_client]
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
// [END build_client]
// [START customize_button]
// Set the dimensions of the sign-in button.
SignInButton signInButton = findViewById(R.id.sign_in_button);
signInButton.setSize(SignInButton.SIZE_STANDARD);
signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
// [END customize_button]
}
@Override
public void onStart() {
super.onStart();
// [START on_start_sign_in]
// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);
// [END on_start_sign_in]
}
// [START onActivityResult]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
// The Task returned from this call is always completed, no need to attach
// a listener.
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
// [END onActivityResult]
// [START handleSignInResult]
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
// Signed in successfully, show authenticated UI.
updateUI(account);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
// Please refer to the GoogleSignInStatusCodes class reference for more information.
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
e.printStackTrace();
updateUI(null);
}
}
// [END handleSignInResult]
// [START signIn]
private void signIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
// [END signIn]
// [START signOut]
private void signOut() {
mGoogleSignInClient.signOut()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// [START_EXCLUDE]
updateUI(null);
// [END_EXCLUDE]
}
});
}
// [END signOut]
// [START revokeAccess]
private void revokeAccess() {
mGoogleSignInClient.revokeAccess()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// [START_EXCLUDE]
updateUI(null);
// [END_EXCLUDE]
}
});
}
// [END revokeAccess]
private void updateUI(@Nullable GoogleSignInAccount account) {
if (account != null) {
mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
} else {
mStatusTextView.setText(R.string.signed_out);
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sign_in_button:
signIn();
break;
case R.id.sign_out_button:
signOut();
break;
case R.id.disconnect_button:
revokeAccess();
break;
}
}
}
D'après ce que j'ai lu, le problème pourrait être causé par la génération SHA1 .
J'ai suivi le guide complet mais apparemment ça ne marche pas.
J'ai copié le SHA1 de Gradle SigningReport
Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
quelle pourrait en être la cause possible?
Merci
PS Serait-ce une cause possible?
Google Play services out of date. Requires 11720000 but found 10932470
android
google-signin
Aaron
la source
la source
Réponses:
Mettez simplement à jour vos services Google Play vers la dernière version (ou 11720000 dans ce cas). Si vous utilisez AVD, les images Nexus 5 et 5X prennent en charge Google Play. Une fois l'émulateur opérationnel, accédez au menu des commandes étendues> Google Play, puis mettez à jour.
la source
Erreur PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)
la source
Vérifiez si les empreintes digitales SHA-1 sont ajoutées aux paramètres du projet Firebase. Sinon, recherchez l'empreinte digitale SHA-1 en utilisant
https://developers.google.com/android/guides/client-auth
Recherchez également l'empreinte digitale SHA-1 de la clé de libération à l'aide de
Supprimer
<keystore path>
avec le chemin du magasin de clés.Ajoutez ensuite les deux empreintes digitales SHA-1 aux paramètres des projets Firebase.
NB: N'oubliez pas de remplacer google-services.json par google-services.json mis à jour par de nouvelles empreintes digitales. J'ai perdu deux jours là-dessus.
Pendant le débogage
Le studio Android génère automatiquement
~/.android/debug.keystore
lors de la première version de débogage et l'utilise pour signer l'application.Pour obtenir l'exécution SHA-1 (mot de passe
android
) ( doc ):Cela
SHA-1
doit être ajouté aux paramètres de l'applicationfirebase
pour permettre l'utilisation des fonctionnalités de connexion Google lors du test de la version de débogage.la source
pour l'erreur 12500 Vous devez ajouter le support gmail dans les paramètres de Firebase uniquement et pour l'erreur 10, ajoutez l'empreinte digitale ssh dans la console Firebase comme vous le voyez sur l'image
la source
L'e-mail d'assistance ainsi que tous les liens de projet et de confidentialité sont nécessaires pour que Google SignIn fonctionne, sinon cela génère 12500.
Définissez-le sur https://console.developers.google.com/apis/credentials en bas du deuxième onglet intitulé "Écran de consentement OAuth" - vous y trouverez trois liens qui doivent être configurés.
Ceci n'est mentionné nulle part dans les guides Firebase.
la source
Essayez de mettre à jour l'écran de consentement OAuth sur https://console.developers.google.com/apis/credentials
la source
J'étais coincé avec ça pendant un moment.
Assurez-vous que ces étapes sont effectuées
la source
Il semble que votre SHA1 est écrasé par Google Play Store. Vérifiez dans votre Google Play Store, dans le panneau de lancement, sous la signature d'applications, voyez si Google Play a un SHA1 supplémentaire ajouté.
Et copiez que SHA1, ajoutez à votre endroit pertinent, ferait le travail.
la source
S'il y a encore quelqu'un avec un problème similaire, si vous ajoutez des étendues personnalisées, assurez-vous qu'il s'agit d'une étendue valide. Dans mon cas, j'ai mélangé les portées Facebook avec les portées Google et j'ai mis du temps à le comprendre!
la source
J'utilise l'authentification Firebase. Mon SHA-1 a été indiqué correctement, l'identifiant du client était également correct mais j'obtenais toujours 12500.
Il s'est avéré que mon problème était que je n'ai pas indiqué l' adresse e-mail du support dans les paramètres de mon projet. (Paramètres -> onglet Général -> section Votre projet (Paramètres publics)).
la source
Accédez à votre projet dans la console Firebase, ouvrez les paramètres du projet, ajoutez-y vos empreintes de certificat SHA. Téléchargez le fichier google-services.json mis à jour et ajoutez-le à votre dossier d'application Projets.
Cela a fonctionné pour moi.
la source
Je pense que l'erreur est venue du mauvais SHA1. N'oubliez pas que le SHA1 est différent entre le mode de sortie et le mode de débogage dans le studio Android. Au lieu d'utiliser keytool pour obtenir le SHA1, vous pouvez utiliser le projet Gradle -> Tâche -> Android -> SigningReport dans le studio Android (vous pouvez l'ouvrir avec le menu Affichage -> Toolwindow -> gradle) pour obtenir la version et déboguer SHA1. Après cela, pour un travail facile, vous devez créer 2 informations d'identification distinctes avec deux SHA1 sur la console Google Cloud (google demande simplement d'en créer 1 à l'aide de la version SHA1, lorsque nous le développerons, cela ne fonctionnera pas car il utilise le débogage SHA1).
la source
Assurez-vous d'abord que vous avez enregistré votre application dans la console des développeurs Google
Assurez-vous que vous disposez des clés
debug
etrelease
dans votre application Firebase. Si cette erreur apparaît en production, ajoutez votre applicationSHA-1 release key
to fire base. S'il apparaît en cours de développement, ajoutez votre fichierSHA-1 debug key
.Obtention de la clé de débogage / libération:
Assurez-vous de télécharger la mise
google-services.json
à jour sur votre application.la source
Pour moi, le problème était d'utiliser un ClientID 'release' avec mon application configurée pour le débogage. Assurez-vous d'avoir une version et une clé de débogage, utilisant respectivement chaque SHA-1.
la source
Si vous venez ici de flutter : C'est l'un des cas d'angle que nous devons résoudre selon la documentation ici: https://pub.dev/packages/google_sign_in
la source
Lorsque votre application s'authentifie auprès d'un serveur principal ou accède aux API Google depuis votre serveur principal, vous devez transmettre l'ID client OAuth 2.0 qui a été créé pour votre serveur à la méthode requestIdToken lorsque vous créez l'objet GoogleSignInOptions, pour accéder aux informations de profil de base de l'utilisateur. . N'oubliez pas non plus d'envoyer l'e-mail d'assistance dans l'écran de consentement OAuth situé sur la page Informations d'identification de la console API.
la source
Il peut également arriver que le compilateur cordova ne puisse pas trouver le fichier de keystore approprié.
Solution: avant d'exécuter
ionic cordova build android
spécifiez les propriétés de signatureÉtape 1 : générer un fichier de stockage de clés de débogage
Exécutez la commande
Utilisez le mot de passe:
android
Étape 2: Copiez le fichier keystore (
debug.keystore
) de~/.android
versplatform/android
répertoire de votre projet actuelÉtape 3: Créez un fichier nommé release-signing.properties dans le
platform/android
répertoireÉtape 4: Ajoutez le contenu dans le fichier
Étape 5: Construisez maintenant
ionic cordova build android
la source
J'ai rencontré le même problème après avoir ouvert mon projet sur un autre ordinateur (autre Android Studio). Dans mon cas, je l'ai résolu en utilisant l'assistant Firebase, que j'avais utilisé pour configurer Firebase au départ. Ouvrez l'assistant Firebase (Outils> Firebase) et sélectionnez Authentification> Se connecter. Cela a reconnecté le projet à Firebase et mis à jour les configurations
la source
J'étais coincé dans le problème de connexion à Google depuis 2 semaines, je l'ai finalement bien trié. Laissez-moi vous expliquer la raison. Le problème était lié à Firebase. Dans Firebase, ils ont mentionné un champ "email de support" comme facultatif. Mais une fois que je l'ai ajouté (n'importe lequel de vos e-mails personnels), le problème a été réglé et j'ai eu la réponse. Si vous obtenez une erreur en tant que 12501, cela est lié aux paramètres de votre compte Google.
la source
J'étais coincé avec ça pendant un moment.
Assurez-vous que ces étapes sont effectuées
la source
Dans mon cas, c'est à cause d'un mauvais identifiant de client Google. Je change ma clé pour la clé répertoriée dans
google-services.json
(sousoauth_client
objet)la source
Assurez-vous que les éléments suivants sont correctement configurés:
strings.xml
,google-services.json
oucredentials.json
fichier.la source
https://developers.google.com/identity/sign-in/android/sign-in suivez cette documentation API, mais gardez à l'esprit qu'à l'intérieur de WEB_CLIENT_ID, utilisez la valeur de l'ID client qui est générée dans le fichier google-services.json.
la source
Dans mon cas, après avoir ajouté une empreinte digitale dans la console Firebase, elle a été automatiquement récupérée par la console des développeurs Google et a montré les empreintes digitales. Mais la connexion n'a pas fonctionné. Après avoir examiné chaque étape, j'ai pensé que Google avait inversé mon package de fichier manifeste comme celui-ci
com.xxxxxxxx.app
. Mais c'est en faitapp.xxxxxxxx.com
, dans la console développeur de Google. J'ai donc supprimé automatiquement créé une empreinte digitale et ajouté une empreinte digitale avec le nom de package correct. BOOM!!. Ça a marché.la source
L'erreur m'est apparue lorsque l'option Google n'était pas activée, comme le montre l'image .
Cela s'est produit lorsque j'ai changé de compte Google et que j'ai oublié d'activer l'option de connexion avec Google.
la source
Assurez-vous que votre projet ne doit contenir aucun caractère spécial, y compris numérique ou tout autre type de symbole (le nom du projet doit être simple comme com.google.testproject)
la source
Dans mon cas, je travaillais sur une application hors production, le problème était que lors de la création d'un projet dans la console Firebase, il y avait des problèmes de synchronisation des clés SHA-1 à partir des consoles de développement Firebase et Google. J'ai donc décidé de créer le projet d'abord sur la console Google Developer, puis de le sélectionner lors de la création d'un nouveau projet sur la console Firebase.
J'ai également fait un tutoriel pour cela, qui peut vous aider.
la source
Dans mon cas, le problème était que mon émulateur n'avait pas de Play Store. J'ai créé l'émulateur (nommé API 23) via Visual Studio, car je développe également à l'aide de Xamarin.Forms, et dans le gestionnaire de périphériques Android de Visual Studio, vous pouvez sélectionner si votre émulateur doit avoir Google Play Store.
J'ai dû créer un émulateur via l'AVD d'Android Studio et s'assurer qu'il avait Play Store:
la source
Dans mon cas, cette erreur était là parce que l'authentification Android a été supprimée par l'équipe senior car il semble qu'il n'y ait pas besoin de clé Android dans l'authentification backend. Les clés client Android et Web sont donc nécessaires pour la connexion à Google.
la source
Essayez ces options:
Il demande le mot de passe et entrez simplement le mot de passe. Vous pouvez voir les empreintes digitales SHA1, MD5.
la source