我正在构建一个简单的测试 android 应用程序,我试图在其中获取有关特定视频的数据。我已经获取了我的调试密钥库的 SHA1 指纹,并用它(和我的包名称)创建了一个 google api 密钥。我已经为它激活了 youtube api 服务。
这是我的代码:
YouTube youtube = new YouTube.Builder(new NetHttpTransport(), new GsonFactory(), new HttpRequestInitializer() {
public void initialize(HttpRequest request) throws IOException {}
}).setApplicationName("MyApp").build();
try {
YouTube.Videos.List listVideosRequest = youtube.videos().list("snippet,contentDetails");
listVideosRequest.setId("A3PDXmYoF5U");
listVideosRequest.setKey(GoogleAPIKey.DEBUG_GOOGLE_API_KEY);
VideoListResponse youtubeResponse = listVideosRequest.execute();
List<Video> youtubeVideos = youtubeResponse.getItems();
return youtubeVideos;
} catch (IOException e) {
Log.e("MyApp", e.getLocalizedMessage());
return null;
}
所以,我总是得到一个例外:403,未配置访问。
我的想法不多了,可能是什么问题。有人用 api 密钥成功地使用了 youtube api for android 吗?
更新:
我只是深入调试了谷歌库,以便找到发送给谷歌的实际请求是什么样的。它是这个:
https://www.googleapis.com/youtube/v3/videos?id=A3PDXmYoF5U&key=[my-debug-google-api-key]&part=snippet,contentDetails
设置这些标题:
Accept-Encoding: gzip
User-Agent: MyApp Google-HTTP-Java-Client/1.15.0-rc (gzip)
我看不出有什么问题。