Если в разделе «Ограничить использование приложениями Android» ничего не установлено, мои запросы к API Google Translate работают правильно. API обычно отвечает кодом состояния 200 и моим ожидаемым результатом.
Но когда я указываю имя пакета и отпечаток сертификата SHA-1 для своего приложения с помощью консоли разработчика, я постоянно получать 403 запрещенных ответа, например:
Код: Выделить всё
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."
}
}
Код: Выделить всё
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
Я Я уверен, что правильно ввел имя пакета в консоли разработчиков Google. Я читаю имя пакета из атрибута package тега манифеста в файле манифеста Android.
Я также уверен, что правильно установите отпечаток SHA-1 в консоли разработчиков Google. Я читаю это значение из своего хранилища ключей с помощью команды keytool -list -v -keystore /path/to/my/keystore. Я получаю то же значение, когда читаю его из файла APK с помощью keytool -list -printcert -jarfile myAppName.apk. Я устанавливаю тот же APK-файл с помощью adb.
Вот что я вижу в консоли разработчика:

Я тестировал это на нескольких устройствах работает на чистом Android. Я получаю сообщение об ошибке в сети Wi-Fi и в сотовой сети, независимо от того, проксирую ли я трафик или нет.
Когда я снимаю ограничение с консоли разработчика, приложение снова работает правильно.
Что я здесь делаю не так?
Примечание. Ранее уже задавалось несколько подобных вопросов. , но без адекватных ответов. Я не хочу использовать ключ браузера или вообще снимать ограничение. Я хочу, чтобы ограничение использования работало правильно.
Подробнее здесь: https://stackoverflow.com/questions/339 ... google-api
Мобильная версия