Android - поиск Youtube API V3 не работает

Мне трудно интегрировать API YouTube v3. Я пробовал все возможные решения, указанные в Ключ API Ютуб.

Вот мой код:

YouTube.Search.List query; 
query = youTube.search().list("id, snippet");
query.setKey(YOUR_API_KEY); 
query.setMaxResults(5L); 
query.setChannelId(channelId); 
query.setOrder("date"); 
SearchListResponse response = query.execute(); 
List<SearchResult> results = response.getItems();

Согласно ответу Айман Аль-Абси, я также попытался передать packageName и сгенерировать SHA1 (ZFzdtB22bpkKGc1kSgi0qxUPSWk=).

request.getHeaders().set("X-Android-Package", packageName);
request.getHeaders().set("X-Android-Cert",signature);

Но когда я это сделал, я получил ошибку:

{ "code": 403, "errors": [ { "domain": "usageLimits", "message": "The Android package name and signing-certificate fingerprint, com.example.somename and ZFzdtB22bpkKGc1kSgi0qxUPSWk=, do not match the app restrictions configured on your API key. Please use the API Console to update your key restrictions.", "reason": "ipRefererBlocked", "extendedHelp": "https://console.developers.google.com/apis/credentials?project=1234567" } ], "message": "The Android package name and signing-certificate fingerprint, com.example.somename and ZFzdtB22bpkKGc1kSgi0qxUPSWk=, do not match the app restrictions configured on your API key. Please use the API Console to update your key restrictions." }

Конфигурации ключей API:

Android - поиск Youtube API V3 не работает

Я добавил отпечатки пальцев SHA-1 как для среды отладки, так и для рабочей среды.

@stackoverflow Это так удивительно!!! Никто не может решить мою проблему.

Audumbar 14.03.2019 16:25

Соответствует ли атрибут упаковка узла манифеста вашего AndroidManifest имени пакета отпечатка пальца SHA, который вы используете?

Simon 15.03.2019 11:55

@ Саймон Да. Атрибуты пакета правильные.

Audumbar 15.03.2019 14:25
3
3
922
1

Ответы 1

Хорошо, это старо, но я понял это для своего случая и подумал, что это может помочь другим. Я пошел в oauth, и это, казалось, разрешилось.

реальная проблема заключается в том, что если вы используете неограниченный ключ [и, возможно, в зависимости от включенного API], у вас есть связанная учетная запись для выставления счетов; айпи должно работать. Если он работает без ограничений, вы на правильном пути.

Как только вы ограничите его Android, он снова не сработает с этим ключом, пока вы не подпишете свое приложение. Самым простым способом, который я нашел, было использование конфигурации подписи для вариантов под Android в файле gradle.

signingConfigs {
    debug {
        storeFile file("/users/xxxxxxxxxx/Android/keystores/google_demos/debugandroid.jks")
        storePassword "xxxxxxxxxx"
        keyAlias "com.example.xxxxxxxxxx"
        keyPassword "xxxxxxxx"
    }
}

Я знаю, что мы также можем добиться этого с помощью клиента oauth2, но в моем случае мне нужно использовать API-ключ, и согласно документации Google это должно быть возможно.

Audumbar 16.03.2019 05:56

Я помню, как ходил по кругу, пытаясь заставить это работать только для поиска, и мне было трудно. Затем в моем приложении мне все равно нужно было публиковать видео в учетной записи пользователя; вместо этого реализовал oauth, и это сработало. В SO есть несколько старых сообщений, которые предлагают вместо этого использовать веб-ключ, и я думаю, что в какой-то момент у меня это сработало. Но я, честно говоря, не знаю, работает ли это больше. Я узнал с помощью примера приложения, в котором использовался ключ, и сейчас он у меня не работает.

keepTrackOfYourStack 16.03.2019 16:27

да. Я также пытался использовать веб-ключ. Это тоже не работает. Спасибо.

Audumbar 16.03.2019 16:58

Другие вопросы по теме