【问题标题】:Getting a 403 code making unauthenticated calls to v3 youtube data api获取 403 代码对 v3 youtube 数据 api 进行未经身份验证的调用
【发布时间】:2015-01-03 03:48:42
【问题描述】:

我的应用程序的 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, “错误”:[{ “域”:“使用限制”, "message" : "访问未配置。请使用 Google Developers Console 为您的项目激活 API。", “原因”:“accessNotConfigured” }], "message" : "访问未配置。请使用 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 可以与任何一个密钥一起使用。我的应用程序仍然有同样的问题;所以所有关于使用浏览器密钥的帖子都不适合我。

【问题讨论】:

标签: android-youtube-api


【解决方案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"
    }
}

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 2016-10-08
    • 2013-10-12
    • 2019-04-02
    • 2023-03-30
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多