Google Translate API: запросы из этого клиентского приложения <пусто> заблокированы
Я получаю сообщение об ошибке 403. - Запросы из этого клиентского приложения Android блокируются с помощью платного API перевода Google Cloud Platform. Прекрасно работает, когда ограничения не установлены. Есть несколько сообщений о подобной проблеме, но никто не ответил.
Я видел в некоторых примерах, есть версия, которая имеет.setApplicationName(), я думаю, что это может помочь, но я не могу найти, какая версия это будет.
Используемый код:
private void translate(String textToTranslate, String targetLanguage, TranslateCallback callback) {
try {
TranslateOptions options = TranslateOptions.newBuilder()
.setApiKey( < api_key >)
.build();
Translate trService = options.getService();
Translation translation = trService.translate(textToTranslate,TranslateOption.targetLanguage(targetLanguage));
callback.onSuccess(translation.getTranslatedText());
}
catch(Exception e) {
callback.onFailure();
}
}`
от: https://medium.com/@amsanjeev/adding-translate-api-to-android-apps-788c5bca5521
1 ответ
Наконец я нашел способ.
При настройке ограничения ключа API для приложения Android вы указали имя пакета и отпечаток сертификата SHA-1. Поэтому, когда вы отправляете запрос в Google, вы должны добавить эту информацию в заголовок каждого запроса.
connection.setRequestProperty("X-Android-Package", "com.example.awesomeapp");
String sign = "5D:5A:12:D3:......".toLowerCase(); //Your SHA1 key in lower cased.
connection.setRequestProperty("X-Android-Cert", sig);
Подробный ответ можно найти здесь.