Restringir el uso de una clave de Android para una API de Google

Mi pregunta es sobre cómo configurar correctamente el nombre del paquete y la huella digital del certificado SHA-1 en la Consola de desarrolladores de Google para restringir el uso de mi clave API de Android en mi aplicación.

Cuando no tengo nada configurado en la sección "Restringir el uso de sus aplicaciones de Android", mis solicitudes a la API de Google Translate funcionan correctamente. La API responde normalmente con el código de estado 200 y mi resultado esperado.

Pero cuando especifico el nombre de un paquete y la huella digital del certificado SHA-1 para mi aplicación usando la Consola de Desarrollador, obtengo 403 respuestas prohibidas como las siguientes:

HTTP/1.1 403 Forbidden
Vary: Origin
Vary: X-Origin
Content-Type: application/json; charset=UTF-8
Date: Sun, 29 Nov 2015 21:01:39 GMT
Expires: Sun, 29 Nov 2015 21:01:39 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic,p=1
Alt-Svc: quic=":443"; ma=604800; v="30,29,28,27,26,25"
Content-Length: 729

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "ipRefererBlocked",
    "message": "There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed."
 }
}

La solicitud tiene el siguiente aspecto. Tenga en cuenta que no hay un encabezado de referencia en la solicitud:

GET https://www.googleapis.com/language/translate/v2?key=XXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXX&source=en&target=es&q=test HTTP/1.1
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 6 Build/LVY48H)
Host: www.googleapis.com
Connection: Keep-Alive
Accept-Encoding: gzip

Supongo que el mensaje de error indica un nombre de paquete o un problema de huella digital SHA-1, a pesar de su mensaje sobre una "restricción por IP o por referencia". Si bien las teclas del navegador permiten la configuración de una restricción por referidor, estoy usando una clave de Android sin ningún lugar para establecer una restricción por IP o por referencia.

Estoy seguro de que ingresé el nombre del paquete correctamente en la Consola de desarrolladores de Google. Estoy leyendo el nombre del paquete delpackage atributo en elmanifest etiqueta en mi archivo de manifiesto de Android.

También estoy seguro de que tengo la huella digital SHA-1 configurada correctamente en la Consola de desarrolladores de Google. Estoy leyendo este valor de mi almacén de claves con el comandokeytool -list -v -keystore /path/to/my/keystore. Obtengo el mismo valor cuando lo leo del archivo APK usandokeytool -list -printcert -jarfile myAppName.apk. Estoy instalando el mismo archivo APK usando adb.

Esto es lo que veo en la Consola de desarrolladores:

He probado esto en varios dispositivos con Android stock. Recibo la respuesta de error en wifi y en la red celular, ya sea que esté representando el tráfico o no.

Cuando elimino la restricción de la Consola de desarrolladores, la aplicación vuelve a funcionar correctamente.

¿Qué estoy haciendo mal aquí?

Nota:Varios similar preguntas tener estado preguntó antes de, pero con No adecuado respuestas. No quiero usar una clave de navegador o eliminar la restricción por completo. Quiero que la restricción de uso funcione correctamente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta