【问题标题】:Google Cloud Vision API Permission DeniedGoogle Cloud Vision API 权限被拒绝
【发布时间】:2016-06-02 14:14:23
【问题描述】:

我试图运行示例应用程序,在这里找到Github Sample,我已经创建了一个证书并创建了一个 API 密钥并按照说明应用。但是当我上传图片时,我得到了这个异常。我不知道我在哪里犯了错误。我错过了什么吗?

failed to make API request because {
    "code": 403,
    "errors": [{
        "domain": "global",
        "message": "Requests from this Android client application <empty> are blocked.",
        "reason": "forbidden"
    }],
    "message": "Requests from this Android client application <empty> are blocked.",
    "status": "PERMISSION_DENIED"
}

【问题讨论】:

  • 运气好吗?我有点面临同样的问题!
  • 我也面临同样的问题。
  • @amalan-dhananjayan 您是否有可能在 API 密钥中设置了捆绑标识符?我猜这可能与我们在 iOS 示例中看到的问题相同。 github.com/GoogleCloudPlatform/cloud-vision/issues/16 我会看看我们是否应该使用一组特定于 Android 的客户端库而不是 Java 客户端库。
  • 是的,我在我的 API 密钥中设置了捆绑说明符,我不应该这样做吗?
  • 它对我有用。我在创建 API KEY 时在 API Manager - Credentials 下创建浏览器密钥而不是 Android 密钥。出于某种奇怪的原因,它正在工作

标签: android google-cloud-platform google-cloud-vision


【解决方案1】:

我怀疑您正在创建一个仅限于您的应用的 Android API 密钥,并注册了您的 sha1 指纹。

这太棒了!不幸的是,non-android-specific Google API java client library 还不完全支持对 android api 密钥的 API 请求,就像 android-specific 一样。这意味着 API 请求不包括一些用于向 API 端点验证密钥/应用程序的标头,这会导致该错误(请注意错误消息中的 client application &lt;empty&gt; - &lt;empty&gt; 将是您的包名称,如果请求按预期形成)。

我仍在寻找解决方法 - 如果/当我找到一个时会更新。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 但我解决了这个问题。

    如果您添加浏览器 API 密钥,您的代码运行良好。

    【讨论】:

    • 你的答案是正确的。它正在工作,但它不是正确的方法,我们无法通过此快速修复正确跟踪数据配额。 @Tim_Swat 正在 Google 解决这个问题。谢谢哥们:)
    • 效果很好,甚至可以跟踪我的案例@AmalanDhananjayan的使用情况
    • 如何获取浏览器 API 密钥.. 我只有 API_KEY.. 请帮忙
    • 使用浏览器密钥并不是使用 API 密钥的真正解决方案
    【解决方案3】:

    你在 android 项目中做了哪些改变?确保启用 Cloud Vision API 并启用计费。我所要做的就是使用 Github 中的相同示例在 MainActivity 中添加我的 API 密钥。

    看看我的screenshot

    【讨论】:

    • 介意分享您作为应用程序包添加的内容。我面临同样的问题,计费已启用,但每个请求都失败
    • sample.google.com.cloudvision 是示例附带的我没有将包名称重构为我自己的。希望这会有所帮助。
    • 您能帮我们解决这个问题吗?我想这应该与启用计费有关。我创建了一个 API 密钥并将其分配给变量 CLOUD_VISION_API_KEY。也为我的项目启用了计费和云 API
    • 您使用的是 Github 示例吗?如果没有,请在您的 Android 清单中检查您的权限。它们应该是:
    【解决方案4】:

    这里出了点问题,我解决了!!!!!!

    只需输入服务器密钥!

    希望对某人有所帮助

    【讨论】:

      【解决方案5】:

      我相信使用浏览器密钥可以解决您的问题。但实际的解决方案是使用 OAuth 密钥。就像一个 Android 应用程序应该做的那样。

      1. 为此,请从 Cloud Developer Console 的侧面菜单中转到凭据部分。
      2. 点击凭据下拉菜单并选择 OAuth 客户端 ID。
      3. 选择应用程序类型为 Android。
      4. 为 Cloud Vision API 添加合适的名称,例如 Android 客户端
      5. 以所需格式输入您的 SHA1 指纹。使用 屏幕上提到的命令。
      6. 输入您的应用程序的包名称,可以位于 gradle 的 defaultConfig 块。
      7. 点击创建。

      这是完整教程here的摘录。

      【讨论】:

        【解决方案6】:

        您可能还将 API 密钥限制为仅允许来自 Android 应用的请求。将其更改为None,它将接受所有请求,但这也意味着安全性降低。

        【讨论】:

          猜你喜欢
          • 2020-08-05
          • 2020-06-26
          • 2020-09-02
          • 2019-12-31
          • 2022-08-03
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 2019-10-25
          相关资源
          最近更新 更多