来自此 Android 客户端应用程序的请求 <empty> 被阻止 - Google API 错误 Flutter

问题描述 投票:0回答:4

问题描述: 我正在使用 Youtube Data API 在 Flutter 应用程序中使用 API 密钥来获取一些视频。 我已经使用此代码来获取我的数据:

    const FETCH_LINK =
        "$BASE_URL?part=$PART&playlistId=$PLAYLIST_ID&key=$API_KEY&maxResults=$MAX_RESULTS";
    var response = await http.get(Uri.parse(FETCH_LINK));

当我在项目的 GCP 控制台的“凭据”选项卡中将“应用程序限制”设置为“无”时,我可以完美地获取数据

现在,当我尝试将数据限制为仅 Android 应用程序时,它显示此错误:

{error: {code: 403, message: Requests from this Android client application <empty> are blocked., errors: [{message: Requests from this Android client application <empty> are blocked., domain: global, reason: forbidden}], status: PERMISSION_DENIED, details: [{@type: type.googleapis.com/google.rpc.ErrorInfo, reason: API_KEY_ANDROID_APP_BLOCKED, domain: googleapis.com, metadata: {service: youtube.googleapis.com, consumer:

我已经检查过的内容: 我已在凭据选项卡中正确添加了调试和发布证书以及 android 包名称。

这里可能出现什么错误? 我的请求中需要传递什么内容作为标头吗?

这是我试图获取的端点

https://youtube.googleapis.com/youtube/v3/playlistItems

我的设置如下: enter image description here

android flutter google-api youtube-api youtube-data-api
4个回答
2
投票

A回答了here,我们需要在标头中传递包名称和SHA1密钥名称。 所以我的新请求将如下所示:

const SHA1 = "0000000000000000000000000000000000000000";
const PACKAGE_NAME = "com.yourapp.name";
const HEADERS = {
      'Content-Type': 'application/json',
      'X-Android-Package': PACKAGE_NAME,
      'X-Android-Cert': SHA1b,
    };
const FETCH_LINK =
        "$BASE_URL?part=$PART&playlistId=$PLAYLIST_ID&key=$API_KEY&maxResults=$MAX_RESULTS";
var response = await http.get(Uri.parse(FETCH_LINK));

1
投票

您限制了您的密钥,这就是您无法通过 Android 发送请求的原因。请不要限制您的密钥,如下所示: enter image description here

我收到的回复

{
   "error":{
      "code":403,
      "message":"Requests from this iOS client application <empty> are blocked.",
      "errors":[
         {
            "message":"Requests from this iOS client application <empty> are blocked.",
            "domain":"global",
            "reason":"forbidden"
         }
      ],
      "status":"PERMISSION_DENIED",
      "details":[
         {
            "@type":"type.googleapis.com/google.rpc.ErrorInfo",
            "reason":"API_KEY_IOS_APP_BLOCKED",
            "domain":"googleapis.com",
            "metadata":{
               "service":"youtube.googleapis.com",
               "consumer":"projects/418596848743"
            }
         }
      ]
   }
}

0
投票

从 sha-1 键中删除“:”,支持示例的语法是错误的


0
投票

“从 sha-1 键中删除“:”,支持示例的语法错误”是的,这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.