Я пытаюсь ограничить свой API_KEY только своим приложением. На странице редактирования ключа API я установил «Приложения Android» и установил имя пакета и отпечаток пальца.
Имя пакета такое же, как в моем AndroidManifest.xml:
Я также передаю имя в коде:
public YouTube getYouTubeService() throws GeneralSecurityException, IOException {
return new YouTube.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, null)
.setApplicationName("com.xxxxxx.yyyyyy")
.build();
}
Отпечаток пальца — это отладочный, восстановленный, как описано на странице:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
У меня также есть способ отобразить отпечаток пальца только для подтверждения:
public String getSHA1Fingerprint() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(signature.toByteArray());
byte[] digest = md.digest();
// Convert to colon-separated hex
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
if (i > 0) {
hexString.append(":");
}
String hex = Integer.toHexString(0xFF & digest);
if (hex.length() == 1) {
hexString.append("0"); // Pad with leading zero
}
hexString.append(hex);
}
return hexString.toString().toUpperCase();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Поэтому я в некоторой степени уверен, что та же информация, что и на странице редактирования ключа API, находится в моем приложении.
Но когда я применяю изменения к ключу, я получаю ошибка 403. Когда я их удалю, я смогу просмотреть видео с YouTube (например).
Ошибка 403:
GET https://youtube.googleapis.com/youtube/ ... entDetails
{
"code": 403,
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_ANDROID_APP_BLOCKED",
"domain": "googleapis.com",
"metadata": {
"service": "youtube.googleapis.com",
"consumer": "projects/1063253415806"
}
}
],
"errors": [
{
"domain": "global",
"message": "Requests from this Android client application are blocked.",
"reason": "forbidden"
}
],
"message": "Requests from this Android client application are blocked.",
"status": "PERMISSION_DENIED"
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ndroid-app
Ограничить Youtube API_KEY только моим приложением для Android ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1732315980
Anonymous
Я пытаюсь ограничить свой API_KEY только своим приложением. На странице редактирования ключа API я установил «Приложения Android» и установил имя пакета и отпечаток пальца.
Имя пакета такое же, как в моем AndroidManifest.xml:
Я также передаю имя в коде:
public YouTube getYouTubeService() throws GeneralSecurityException, IOException {
return new YouTube.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, null)
.setApplicationName("com.xxxxxx.yyyyyy")
.build();
}
Отпечаток пальца — это отладочный, восстановленный, как описано на странице:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
У меня также есть способ отобразить отпечаток пальца только для подтверждения:
public String getSHA1Fingerprint() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(signature.toByteArray());
byte[] digest = md.digest();
// Convert to colon-separated hex
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
if (i > 0) {
hexString.append(":");
}
String hex = Integer.toHexString(0xFF & digest[i]);
if (hex.length() == 1) {
hexString.append("0"); // Pad with leading zero
}
hexString.append(hex);
}
return hexString.toString().toUpperCase();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Поэтому я в некоторой степени уверен, что та же информация, что и на странице редактирования ключа API, находится в моем приложении.
Но когда я применяю изменения к ключу, я получаю ошибка 403. Когда я их удалю, я смогу просмотреть видео с YouTube (например).
Ошибка 403:
GET https://youtube.googleapis.com/youtube/v3/channels?id=xxxxxxxxxxxxx&key=yyyyyyyyyyyyyyyyyyyyyy&part=contentDetails
{
"code": 403,
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_ANDROID_APP_BLOCKED",
"domain": "googleapis.com",
"metadata": {
"service": "youtube.googleapis.com",
"consumer": "projects/1063253415806"
}
}
],
"errors": [
{
"domain": "global",
"message": "Requests from this Android client application are blocked.",
"reason": "forbidden"
}
],
"message": "Requests from this Android client application are blocked.",
"status": "PERMISSION_DENIED"
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79216780/restrict-youtube-api-key-to-only-my-android-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия