使用Android Studio,我正在创建一个应用程序,根据某些标准列出YouTube视频。 我正在使用搜索列表方法。 在应用程序中,我调用了YouTube API并解析了结果。
这个应用程序在我的家庭Wifi上使用"服务器"键工作正常。 但是,当切换到"Android"键时,该应用程序不再工作。 对 API 的调用不再返回预期数据,并给出java.io.FileNotFoundException: https://www.googleapis.com/youtube/v3/search...
错误。
我正在 Google Developers Console 上设置 YouTube API 密钥。 我使用命令 keytool -list -v -keystore .android/debug.keystore
的 SHA1 输出创建一个"公共 API 访问"密钥,然后附加分号和包名称"com.mysite.projectname"(如说明中所述)。
我很难弄清楚这个问题。 似乎API密钥设置正确并且应该可以工作(至少对于开发而言)。
--在下面添加答案的编辑
我使用下面的类来存储我的 API 密钥。 我使用其他类中的DeveloperKey.DEVELOPER_KEY
访问密钥。 如前所述,当我有一个"服务器"键而不是"Android"键时,这有效。
package com.mysite.projectname;
public class DeveloperKey {
public static final String DEVELOPER_KEY = "MyAPIKey";
}
调用 API,如下所示:
https://www.googleapis.com/youtube/v3/search?part=snippet........&key=MyAPIKey
将其作为评论发布,但显然我不能,所以这里什么都没有。如何在应用中实现密钥?最简单的方法是将其放入字符串中.xml并使用如下所示的内容调用它:
setContentView(R.layout.activity_youtube_player);
//initialize
YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
youTubePlayerView.initialize(getString(R.string.api_youtube), this);
和字符串.xml看起来像
<string name="api_youtube">MYFANCYKEYHERE</string>
你能发布你的实现片段吗?
编辑
听起来你正确地抓住了 SHA1 键(如果你想检查你做得是否正确,你可以参考这个家伙)。为了详细说明我在下面的评论,我不确定您是否真的可以从Android平台的该链接中获取YouTube视频。Youtube API让你很容易做到这一点,尽管你必须记住先在你的清单中输入适当的权限<uses-permission android:name="android.permission.INTERNET" />
。我在下面给出了一个链接,这是一个关于如何以 Google 批准 (TM) 方式执行此操作的教程,如果您感到无聊并想以 rtsp 方式拉动它,这家伙有说明。(但我不推荐它,因为质量很糟糕)。