2013-05-21 38 views
1

我正在构建一个简单的测试Android应用程序,我试图获取有关特定视频的数据。我已经拿到了我的调试密钥库的SHA1指纹,并创建了一个google API密钥(以及我的包名称)。我已经为它启动了YouTube的API服务。Android - youtube api r52 - “访问未配置”

这是我的代码:

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,访问未配置。

我用尽了想法,可能是错的。 任何人都已经成功地使用YouTube的API,但与API密钥?

更新:

我只是深深地调试的谷歌图书馆,以便找到,实际的请求是什么样子,也就是发送给Google。它是这样的:

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) 

我看不出有什么不对劲的地方。

+0

您好!你解决了这个问题吗? – Viacheslav

+0

不幸的是,不幸的是:( – ghost23

回答

0

好,大量的阅读后,我发现this google doc

您必须将授权令牌每一次插入,更新和删除请求。您还必须为任何检索经过身份验证的用户私有数据的请求发送授权令牌。

此外,一些用于检索资源的API方法可能支持需要授权的参数,或者在请求被授权时可能包含额外的元数据。例如,如果请求被该特定用户授权,则检索用户上传的视频的请求也可以包含私人视频

所以结论很简单 - 您只能使用API​​密钥读取非私人数据,而视频也可能是私人数据。在我的情况下,我试图匿名加载Channels - 并且仅在请求channel_id时才有效。当我请求contentDetails(包含上传链接)时,我也得到了403错误。

+0

谢谢,很快就会检查,不幸的是我现在在假期:) – ghost23