Protege las credenciales de Cloud de tu app para Android que implementa el AA de Firebase
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Si tu app para Android usa una de las APIs de Cloud de Firebase ML, antes de
lanzarla a producción, debes tomar algunas medidas adicionales para evitar
accesos no autorizados a la API.
Para las apps de producción, asegúrate de que solo los clientes autenticados tengan acceso a los servicios en la nube. Ten presente que solo los dispositivos sin permisos de administrador pueden autenticarse con el método descrito.
Luego, deberás crear una clave de API solo para depuración que puedes usar para tu comodidad durante las pruebas y el desarrollo.
1. Registra tus apps de producción con Firebase
Primero, registra las apps de producción con Firebase.
Asegúrate de tener las firmas SHA-1 de tu app. Consulta
cómo autenticar tu cliente
y obtén información para hacerlo.
Ve a la
configuración del proyecto, settings, en Firebase y, luego, selecciona la pestaña
Configuración.
Desplázate hacia abajo hasta la tarjeta Tus apps y, luego, selecciona tu app para Android.
Agrega la firma SHA-1 de tu app a la información de la app.
2. Restringe los permisos de las claves de API
A continuación, configura las claves de API existentes para inhabilitar el acceso a la API de
Cloud Vision:
Abre la página Credenciales de la consola de Google Cloud. Cuando se te solicite, selecciona tu proyecto.
Para cada clave de API existente en la lista, abre la vista de edición.
En la sección Restricciones de API, selecciona Restringir clave y, luego, agrega a
la lista todas las APIs a las que deseas que tenga acceso la clave de API. Asegúrate
de no incluir la API de Cloud Vision.
Cuando configuras las restricciones de API de una clave de API, declaras en forma
explícita las APIs a las que tiene acceso la clave. De forma predeterminada, cuando la
sección Restricciones de API tiene seleccionada la opción No restringir clave,
se puede usar una clave de API a fin de acceder a cualquier API que esté habilitada para el proyecto.
Ahora tus claves de API existentes no otorgarán acceso a servicios de AA de la nube, pero cada
clave seguirá funcionando para las APIs que hayas agregado a su lista
Restricciones de API.
Ten en cuenta que, si habilitas más APIs en el futuro, deberás agregarlas a
la lista Restricciones de API de la clave de API correspondiente.
3. Crea y usa una clave de API solo para depuración
Por último, crea una clave de API nueva y úsala solamente en el desarrollo. Firebase ML puede usar esta clave de API para acceder a los servicios de Google Cloud en entornos donde la autenticación de la app no está disponible, por ejemplo, cuando se ejecuta en emuladores.
Para crear una nueva clave de API y usarla en el desarrollo, haz lo siguiente:
Abre la página Credenciales de la consola de Google Cloud. Cuando se te solicite, selecciona tu proyecto.
Haz clic en Crear credenciales > Clave de API y anota la nueva clave de
API. Esta clave habilita el acceso a la API desde apps no autenticadas, por lo tanto, no la compartas.
Para asegurarte de que la nueva clave de API de depuración no se haya filtrado con la aplicación que lanzaste, especifica la clave de API de depuración en un archivo de manifiesto de Android que se utiliza solo para compilaciones de depuración:
Si aún no tienes un manifiesto de depuración, debes crear uno.
Para ello, haz clic en File > New > Other > Android Manifest File y selecciona debug
en los conjuntos de orígenes de destino.
Agrega la siguiente declaración en el manifiesto de depuración:
En tu app, configura Firebase ML para usar la coincidencia de la huella digital del certificado para
autenticar a tu cliente en producción y usar las claves de API, es decir, la clave de depuración,
solo en las compilaciones de depuración:
Kotlin
valoptionsBuilder=FirebaseVisionCloudImageLabelerOptions.Builder()if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch()}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f)// ...// And lastly:valoptions=optionsBuilder.build()FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
FirebaseVisionCloudImageLabelerOptions.BuilderoptionsBuilder=newFirebaseVisionCloudImageLabelerOptions.Builder();if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch();}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f);// ...// And lastly:FirebaseVisionCloudImageLabelerOptionsoptions=optionsBuilder.build();FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["\u003cbr /\u003e\n\nIf your Android app uses one of Firebase ML's cloud APIs, before you launch your\napp in production, you should take some additional steps to prevent\nunauthorized API access.\n\nFor your production apps, you will ensure that only authenticated clients can\naccess cloud services. (Note that only non-rooted devices can authenticate using\nthe method described.)\n\nThen, you will create a debug-only API key that you can use for convenience\nduring testing and development.\n\n1. Register your production apps with Firebase\n\nFirst, register your production apps with Firebase.\n\n1. Make sure that you have your app's SHA-1 signatures. Refer to\n [Authenticating your client](//developers.google.com/android/guides/client-auth)\n to learn how.\n\n2. Go to your settings\n *Project settings* in the Firebase console, then select the *Settings*\n tab.\n\n3. Scroll down to the *Your apps* card, then select your Android app.\n\n4. Add your app's SHA-1 signature to your app's information.\n\n2. Restrict the scope of your API keys\n\nNext, configure your existing API keys to disallow access to the Cloud Vision\nAPI:\n\n1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n2. For each existing API key in the list, open the editing view.\n\n3. In the *API restrictions* section, select **Restrict key** , then add to the\n list all of the APIs to which you want the API key to have access. Make sure\n to ***not*** include the Cloud Vision API.\n\n When you configure an API key's *API restrictions* , you are explicitly\n declaring the APIs to which the key has access. **By default, when the *API\n restrictions* section has *Don't restrict key* selected, an API key can be\n used to access any API that is enabled for the project.**\n\nNow, your existing API keys will not grant access to cloud ML services, but each\nkey will continue to work for any APIs that you added to its *API restrictions*\nlist.\n\nNote that if you enable any additional APIs in the future, you must add them to\nthe *API restrictions* list for the applicable API key.\n\n3. Create and use a debug-only API key\n\nFinally, create a new API key to be used only for development. Firebase ML can\nuse this API key to access Google Cloud services in environments where app\nauthentication isn't possible, such as when running on emulators.\n\n1. Create a new API key to be used for development:\n\n 1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n 2. Click **Create credentials \\\u003e API key** and take note of the new API\n key. This key allows API access from unauthenticated apps, so\n **keep this key confidential**.\n\n2. To ensure the new debug API key is not leaked with your released app,\n specify the debug API key in an Android manifest file used only for debug\n builds:\n\n 1. If you don't already have a debug manifest, create one by clicking\n **File \\\u003e New \\\u003e Other \\\u003e Android Manifest File** and selecting `debug`\n from the target source sets.\n\n 2. In the debug manifest, add the following declaration:\n\n ```text\n \u003capplication\u003e\n \u003cmeta-data\n android:name=\"com.firebase.ml.cloud.ApiKeyForDebug\"\n android:value=\"your-debug-api-key\" /\u003e\n \u003c/application\u003e\n ```\n3. In your app, configure Firebase ML to use certificate fingerprint matching to\n authenticate your client in production and to use API keys---the debug\n key---only in debug builds:\n\n Kotlin \n\n ```kotlin\n val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch()\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f)\n // ...\n\n // And lastly:\n val options = optionsBuilder.build()\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/kotlin/MainActivity.kt#L30-L42\n ```\n\n Java \n\n ```java\n FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =\n new FirebaseVisionCloudImageLabelerOptions.Builder();\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch();\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f);\n // ...\n\n // And lastly:\n FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/MainActivity.java#L30-L43\n ```\n\nNext steps\n\nSee the [launch checklist](/support/guides/launch-checklist) for information on\npreparing your app to launch when using other Firebase features."]]