获取403代码对v3 youtube数据api进行未经身份验证的调用

时间:2014-11-06 15:14:01

标签: android-youtube-api

我的应用程序的google api项目包含一个简单的android密钥,允许两个应用程序。一个是com.examples.youtubeapidemo,另一个是我的应用程序。如果我将com.examples.youtubeapidemo放入和取出密钥,它将按预期失败。另一个应用程序始终返回此响应:

  

11-06 08:06:52.321 32579-528 / com.wfs.android.youtubesearchtest E / com.wfs.android.youtubesearchtest:403 Forbidden       {       "代码" :403,       "错误" :[{       "结构域" :" usageLimits",       "消息" :"未配置访问权限。请使用Google Developers Console激活项目的API。",       "理由" :" accessNotConfigured"       }],       "消息" :"未配置访问权限。请使用Google Developers Console激活项目的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可以使用其中任何一个。我的应用仍然有同样的问题;所以关于使用浏览器密钥的所有帖子都不适用于我。

1 个答案:

答案 0 :(得分:2)

好的,这已经过时了,但我认为这适用于我的情况,我认为这可能有助于其他人。我去了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"
    }
}