当前位置: 首页 > 知识库问答 >
问题:

YouTube获取上传的视频列表。文件未找到错误

法烨烨
2023-03-14

我正在尝试使用以下内容获取上传到我的YouTube频道的视频列表

https://www.googleapis.com/youtube/v3/search?part=snippet

我在Google App Console中创建了App并为其生成APP ID。但是当我试图通过我的Android应用程序访问它时,java.io.FileNotFoundException错误

我也给了应用程序标识符和SHA1,如果我尝试通过Web浏览器键访问而没有任何其他约束,它可以很好地工作并返回所有视频列表,但在Android的情况下它不起作用。

@Override
    protected String doInBackground(Void... voids) {

        HttpURLConnection urlConnection = null;

        String urlString = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8";
        //urlString = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLTqSMwQKOhUhl7gm7h6YwX6XPYr0ViBtu&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8";

        String jsonString = new String();

        URL url = null;
        try {
            url = new URL(urlString);

        urlConnection = (HttpURLConnection) url.openConnection();

        urlConnection.setRequestMethod("GET");
        urlConnection.setReadTimeout(10000 /* milliseconds */);
        urlConnection.setConnectTimeout(15000 /* milliseconds */);

        urlConnection.setDoOutput(true);

        urlConnection.connect();

        BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));

        char[] buffer = new char[1024];

        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) {
            sb.append(line+"\n");
        }
        br.close();

        jsonString = sb.toString();

        System.out.println("JSON: " + jsonString);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return jsonString;
    }

错误日志

BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8
05-13 15:28:26.607 19118-19151/com.jeevanmulmantra W/System.err: java.io.FileNotFoundException: https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8

共有3个答案

平俊茂
2023-03-14

我也遇到了同样的问题,只需重新生成另一个密钥,并使用来自Android Studio的包名和SHA1再次限制它。这对旧钥匙不起作用,重新生成钥匙并再次限制它对我起作用。

史良哲
2023-03-14

这不是你要问的,但我会分享我的经验。

几个月前我也遇到过类似的情况。在网上搜索时,我得出了Android的YouTubeapi选项不起作用的结论。我最终为我的开发找到了一个更方便的html" target="_blank">解决方案:

我得到了一个网站的YT api密钥,并将其绑定到相应的域。

我创建了一个php文件,使用服务器上的curl和cron作业设置每天两次从youtube获取播放列表。json格式的播放列表文件随后被写入web服务器(每天刷新两次)。

Android应用程序连接到我的服务器,并从那里获取“缓存”的json播放列表。

此选项大大减少了对配额消耗的影响,因为播放列表的所有点击都会转到网站。

如果你对这个选项感兴趣,我可以分享用于获取播放列表的php。

史良哲
2023-03-14

如果不查看API控制台设置,我无法确定。但是从HTTP响应来看,您的IP地址可能被Google授权服务器阻止了。因此,它将向您发回未经授权的请求HTTP状态代码403。

转到API控制台,从“密钥限制”部分下选择“无”单选按钮。然后再试一次。它应该有用。

 类似资料:
  • 我已经遵循了一个关于如何使用youtube gdata的教程。使用来自youtube的视频和点击来填充列表视图。源代码可在以下位置找到: http://blog.blundell-apps.com/click-item-in-a-listview-to-show-youtube-video/ 一旦我更改了YouTube GData链接 来自: https://gdata.youtube.com/f

  • 我正在使用https://developers.google.com/youtube/的这些API,但是我想不出,给定一个youtube频道地址,如何获得带有相关信息的视频列表(至少是单个视频url和标题)

  • 我正试图找出在给定频道频道ID的情况下获取频道上传播放列表ID的最佳方法。E、 g.对于具有channelID的信道 UC9CuvdOVfMPvKCiwdGKL3cQ 对应的上传playlistID为 UU9CuvdOVfMPvKCiwdGKL3cQ 请注意,第二个字符已从“C”更改为“U” 我可以通过字符串操作进行此转换,但我很好奇是否有更好,更不麻烦的方式通过官方youtube api找到上传

  • 我在youtube频道上传了100多个视频。我得到频道的xml为:https://gdata.youtube.com/feeds/api/users/UserId/uploads,它只返回带有id的xml,只有25个视频。如何获取特定频道上所有上传视频的xml

  • 请求header GET /v1/videos Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 可选参数 title=视频名称&act_id=视频所属频道id&manager=频道管理员ID&perPage=每页显示条数&p=页码 可

  • 当我登录时,我们可以在Youtube网站顶部看到基于我的Youtube历史记录的个性化推荐视频。现在,我正在尝试使用Youtube数据API v3在Youtube上获取推荐视频。 据我所知,在YouTube API v2中有一个API来获取推荐视频列表,但在v3中被弃用,如下所示: 视频推荐 YouTube数据API (v2)功能:检索视频推荐 v3 API不会检索仅包含为当前API用户推荐的视频