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 IDscon el nombre del paquete respectivo y SHA-1 .
Puede crear o editar su OAuth 2.0 client IDsaquí 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.propertiese ingresándolo build.gradlecomo 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.jsonarchivo en su proyecto (la generación del archivo realiza los pasos de configuración necesarios).
resultCode == Activity.RESULT_CANCELED). Utilizando GMS 8.4.0.