developers - Error de inicio de sesión de Google com.google.android.gms.common.api.ApiException: 10:
google cloud credentials (5)
Así que estoy atascado en este tema frustrante. Soy bastante nuevo en Google Auth en Firebase, pero hice todo lo que se indica en la documentación de Firebase sobre cómo integrar la autenticación de inicio de sesión en Google, pero todavía recibo este extraño error en la consola que consta de dos partes:
12-03 11:07:40.090 2574-3478/com.google.android.gms E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
y también
Google sign in failed com.google.android.gms.common.api.ApiException: 10:
Antes de que alguien intente señalar preguntas similares que se hayan formulado anteriormente sobre el desbordamiento de pila, esto es lo que he hecho hasta ahora, después de haber visto todas las soluciones disponibles y aún no ha resuelto el error
- Tengo mi huella dactilar SHA1 para mi proyecto
- Tengo mi ID de cliente de OAuth 2.0, tanto la ID de cliente de Android como el cliente web y en el requestIdToken () puse la ID de cliente web .
- No publiqué la APK de mi proyecto en google play store. lo que significa que no generé accidentalmente otra huella digital SHA1.
- He seguido paso a paso el inicio de sesión en Google Autenticación de documentos de base de datos.
Aquí está mi fragmento de código:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
ButterKnife.bind(this);
String webClientId = getString(R.string.web_client_id);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(webClientId)
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
googleLoginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
});
}
@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);
try{
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
Log.w(TAG, "Google sign in failed", e);
// [START_EXCLUDE]
Toast.makeText(this, "Gooogle Auth failed", Toast.LENGTH_LONG);
// [END_EXCLUDE]
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
// [START_EXCLUDE silent]
//showProgressDialog();
// [END_EXCLUDE]
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user''s information
Log.d(TAG, "signInWithCredential:success");
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(LoginActivity.this, "Successful Auth", Toast.LENGTH_LONG).show();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithCredential:failure", task.getException());
Toast.makeText(LoginActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
//updateUI(null);
}
// [START_EXCLUDE]
//hideProgressDialog();
// [END_EXCLUDE]
}
});
}
Al utilizar la Firma de aplicaciones de Google Play y Firebase , debe agregar la huella digital SHA-1 del certificado de firma de la aplicación (que se encuentra en la Consola de Google Play / Certificado de firma de aplicaciones / Firma) a la Consola / Configuración de Firebase / Configuración / Huellas digitales de certificados de SHA
Básicamente, el problema está en la clave SHA1
encuentra en la consola, vuelva a generarla y vuelva a colocarla correctamente en el mismo proyecto.
1) Como respuesta, asegúrese de que su apk
Android firmado real tenga la misma huella digital SHA1
que la especificada en la consola de la sección de integración de Android de su proyecto Firebase (la página donde puede descargar google-services.json
)
2) Además de eso, vaya a la Configuración de su proyecto de base de fuego (el ícono del engranaje está a la Vista general en el área superior izquierda. Luego, cambie a la pestaña Vinculación de la cuenta. En esa pestaña vincule Google Play con su proyecto.
En mi caso, no hay problema con SHA-1
He hecho GoogleAuth
utilizando Firebase
.
Olvidé agregar la implementation ''com.firebaseui:firebase-ui-auth:4.3.1''
Y puse mi propia clave en lugar de R.string.default_web_client_id
, así que ese fue el problema. R.string.default_web_client_id
dependencia anterior y reemplacé R.string.default_web_client_id
con mi propia clave.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
Enfrenté el mismo problema. Después de buscar una solución, de regenerar la huella dactilar a vincular la aplicación en base de fuego a la consola de Google Play y publicar la apk firmada, el problema era en realidad porque estaba usando la versión SHA-1 en La consola base de fuego.
- Si aún está en modo de debut, use el debug.keystore SHA1
- Utilice el lanzamiento SHA1 solo si está en modo de producción
https://developer.android.com/studio/publish/app-signing.html
No estoy seguro de si esta es la causa, pero es posible que tengamos que usar el ID de cliente web en la aplicación de Android antes de publicarlo, lea el siguiente artículo:
https://android-developers.googleblog.com/2016/03/registering-oauth-clients-for-google.html