Google Cloud Vision API 权限被拒绝

Google Cloud Vision API Permission Denied

我正在尝试 运行 示例应用程序,在此处找到 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"
}

您在 android 项目中更改了哪些内容?确保启用云视觉 API 并启用计费。我所要做的就是使用 Github.

中的相同样本在 MainActivity 中添加我的 API 键

看看我的screenshot

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

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

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

太棒了!不幸的是,non-android-specific Google API java client library doesn't yet fully support API requests for android api keys, like the android-specific 确实如此。这意味着 API 请求不包括一些 headers 将 key/app 验证到 API 端点,这会导致该错误(注意 client application <empty> 在错误消息 - 如果请求按预期形成,<empty> 将是您的包名称。

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

这里有些问题,我解决了!!!!!

只需输入服务器密钥!!

希望对大家有所帮助

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

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

这是完整教程的节选 here

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