Ограничение использования ключа Android для Google APIAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ограничение использования ключа Android для Google API

Сообщение Anonymous »

Мой вопрос заключается в том, как правильно настроить имя пакета и отпечаток сертификата SHA-1 в консоли разработчиков Google, чтобы ограничить использование моего ключа API Android моим приложением.

Если в разделе «Ограничить использование приложениями 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."
}
}
Запрос выглядит следующим образом. Обратите внимание, что в запросе нет заголовка Referer:

Код: Выделить всё

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
Я предполагаю, что сообщение об ошибке указывает на имя пакета или проблему с отпечатком SHA-1, несмотря на сообщение об «ограничении для каждого IP или для каждого реферера». Хотя ключи браузера позволяют устанавливать ограничения для каждого реферера, я использую ключ Android, в котором некуда устанавливать ограничения для каждого IP-адреса или каждого реферера.

Я Я уверен, что правильно ввел имя пакета в консоли разработчиков 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»