我的应用程序的谷歌api项目包含一个简单的android密钥,允许两个应用程序。一个是com.examples.youtubeapidemo,另一个是我的应用程序。如果我把com.examples.youtubeapidemo插入和取出密钥,它会按预期失败。另一个应用程序总是返回此响应:
11-06 08:06:52.321 32579-528/com.wfs.android.youtubesearchtest﹕403禁止{"代码":403,"错误":[{"域":"usageLimits","消息":"未配置访问权限。请使用Google开发者控制台为您的项目激活API。","原因":"accessNotConfigured"}],"消息":"未配置访问权限。请使用Google开发者控制台为您的项目激活API。"}
我的代码是:[在异步任务中]
{
YouTube.Builder builder = new YouTube.Builder(
new NetHttpTransport(),
new JacksonFactory(),
new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest request)
throws IOException {
}
})
.setApplicationName((String.valueOf(R.string.app_name)));
return builder.build();
}
这个:
{
// ...
YouTube youTube = createYouTubeService();
YouTube.Search.List search = null;
try {
search = youTube.search().list("id,snippet");
} catch (IOException e) {
Log.e(TAG, e.getMessage());
return null;
}
search.setKey(Developerkey.DEVELOPER_KEY);
search.setQ(q[0]);
search.setType("video");
search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED);
SearchListResponse searchListResponse = null;
try {
searchListResponse = search.execute();
}
在searchListResponse = search.execute();
中引发异常
我已经测试了密钥,代码中是否有我可能遗漏的内容?
我还测试了一个浏览器密钥,com.examples.youtubeapidemo可以使用其中任何一个。我的应用程序仍然存在同样的问题;所以所有关于使用浏览器键的帖子对我来说都不起作用。
好吧,这是旧的,但我为我的案例找到了这个,我认为它可能会帮助其他人。我去了oauth,它似乎解决了。
真正的问题是,如果你使用了一个不受限制的密钥[也许,依赖于启用的api],那么就链接了一个账单账户;api应该可以工作。如果它不受限制地工作,那么你就走在了正确的轨道上。
一旦你将其限制在android上,它将再次使用该密钥失败,直到你签署你的应用程序。我发现最简单的方法是在gradle文件中为android下的变体使用签名配置。
signingConfigs {
debug {
storeFile file("/users/xxxxxxxxxx/Android/keystores/google_demos/debugandroid.jks")
storePassword "xxxxxxxxxx"
keyAlias "com.example.xxxxxxxxxx"
keyPassword "xxxxxxxx"
}
}