作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题描述:我正在使用 Youtube Data API 在 Flutter 应用程序中使用 API key 获取一些视频。我使用这段代码来获取我的数据:
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 包名称。
这里可能出现的错误是什么?我需要在请求中将任何内容作为 header 传递吗?
这是我要获取的端点
https://youtube.googleapis.com/youtube/v3/playlistItems
最佳答案
一个回答here ,我们需要在 header 中传递包名称和 SHA1 key 名称。所以我的新请求看起来像这样:
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));
关于android - 来自此 Android 客户端应用程序 <empty> 的请求被阻止 - Google API 错误 Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70099185/
我是一名优秀的程序员,十分优秀!