Aunque ya existen muchas respuestas con votos positivos en esta pregunta, me costó entender la lógica. Entonces, se me ocurrió mi investigación.
Para obtener SHA-1, ejecute esto en la terminal:
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
Acerca de OAuth 2.0 client IDs
- OAuth para la web (en la aplicación esto se usa como
server_client_id
)
- OAuth para Android (debe crearse con el nombre del paquete correcto y la huella digital del certificado de firma SHA-1 ).
Si está utilizando el almacén de claves diferente para depurar y liberar, debe crear por separado OAuth 2.0 client IDs
con el nombre del paquete respectivo y SHA-1 .
Puede crear o editar su OAuth 2.0 client IDs
aquí https://console.developers.google.com/apis/credentials?project=
- Navegando a su aplicación.
- Si ya tiene un OAuth para Android, haga clic en su nombre y verifique el nombre del paquete y SHA-1 .
Podemos usar el mismo almacén de claves tanto para la depuración como para el lanzamiento guardando los detalles del almacén de claves en global (local, no dentro del proyecto) gradle.properties
e ingresándolo build.gradle
como se muestra a continuación.
def key_alias = ""
def key_password = ""
def store_file = ""
def store_password = ""
try {
key_alias = YOUR_KEY_ALIAS
key_password = YOUR_KEY_PASSWORD
store_file = YOUR_KEYSTORE_PATH
store_password = YOUR_KEYSTORE_PASSWORD
} catch (Exception exception) {
throw new IllegalStateException('Failed to find key store details. Social Login is disabled');
}
android {
signingConfigs {
config {
keyAlias key_alias
keyPassword key_password
storeFile file(store_file)
storePassword store_password
}
}
buildTypes {
debug {
signingConfig signingConfigs.config
}
release {
signingConfig signingConfigs.config
}
}
}
Puede usar el siguiente fragmento
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// ...
} else if (result.getStatus().getStatusCode() == CommonStatusCodes.NETWORK_ERROR) {
// No internet connection
} else if (result.getStatus().getStatusCode() == CommonStatusCodes.DEVELOPER_ERROR) {
// Wrong server OAuth key(server_client_id)
} else if (result.getStatus().getStatusCode() == 12501) {
// Wrong app signing-certificate fingerprint SHA1
} else {
Log.e("Google sign in error", result.getStatus().toString());
}
}
}
Nota: Si habilitó solo el inicio de sesión de Google cuando generó el archivo de configuración, no es necesario que agregue el google-servies.json
archivo en su proyecto (la generación del archivo realiza los pasos de configuración necesarios).
resultCode == Activity.RESULT_CANCELED
). Utilizando GMS 8.4.0.