我很难集成youtube v3 API。我尝试了在Youtube API Key中给出的所有可能的解决方案。
这是我的代码:
YouTube.Search.List query;
query = youTube.search().list("id, snippet");
query.setKey(YOUR_API_KEY);
query.setMaxResults(5L);
query.setChannelId(channelId);
query.setOrder("date");
SearchListResponse response = query.execute();
List<SearchResult> results = response.getItems();
根据Ayman Al-Absi的回答,我也尝试传递packageName并生成SHA1(ZFzdtB22bpkKGc1kSgi0qxUPSWk =)。
request.getHeaders().set("X-Android-Package", packageName);
request.getHeaders().set("X-Android-Cert",signature);
但是当我这样做时,我得到了错误:
{“code”:403,“errors”:[{“domain”:“usageLimits”,“message”:“Android程序包名称和签名证书指纹,com.example.somename和ZFzdtB22bpkKGc1kSgi0qxUPSWk =,与应用程序不匹配在您的API密钥上配置的限制。请使用API控制台更新您的密钥限制。“,”reason“:”ipRefererBlocked“,”extendedHelp“:”https://console.developers.google.com/apis/credentials?project=1234567“}],”message“:”Android软件包名称和签名 - 证书指纹,com.example.somename和ZFzdtB22bpkKGc1kSgi0qxUPSWk =,与您在API密钥上配置的应用限制不匹配。请使用API控制台更新您的密钥限制。“ }
API密钥配置:
我为调试和prod环境添加了SHA-1指纹。
好的,这已经过时了,但我认为这适用于我的情况,我认为这可能有助于其他人。我去了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"
}
}