Google 自定义搜索 API - 引擎检索引擎数据失败

2024-04-21

我需要在自定义搜索引擎上进行 CRUD。从文档 https://developers.google.com/custom-search/docs/api,它看起来非常简单。但我不断收到 401 回复。

我正在使用 Google.Apis.Oauth2.v2 来获取令牌:

String serviceAccountEmail = "[email protected] /cdn-cgi/l/email-protection";

var certificate = new X509Certificate2(@"key.p12", "blah", X509KeyStorageFlags.Exportable);

var credential = new ServiceAccountCredential(
   new ServiceAccountCredential.Initializer(serviceAccountEmail)
   {
      Scopes = new[] { "https://www.googleapis.com/auth/cse" }
   }.FromCertificate(certificate));

bool result = credential.RequestAccessTokenAsync(CancellationToken.None).Result;
TokenResponse token = credential.Token;

然后,我将令牌添加到以下请求(授权:Bearer mytoken):

GET http://cse.google.com/api/<USER_ID>/cse/<CSE_ID>

有几件事让我很震惊。

  1. 文档的准确引用:

虽然您可以将 HTTP 请求设置为 URLhttp://cse.google.com/api/[USER_ID]/cse/[CSE_ID] http://cse.google.com/api/%5BUSER_ID%5D/cse/%5BCSE_ID%5D,我们建议使用 改为以下 URL:

http://cse.google.com/api/[USER_ID]/cse/[CSE_ID] http://cse.google.com/api/%5BUSER_ID%5D/cse/%5BCSE_ID%5D

请注意,两个 URL 完全相同。

  1. 在身份验证部分,示例使用 ClientLogin,但已弃用。没有 OAuth 2.0 的示例。

  2. 在文档的示例中,它说:

每个自定义搜索引擎均由创建的唯一 ID 标识 将用户 ID 与自定义搜索引擎 ID 组合,并用 分隔 冒号,像这样:

011737558837375720776:mbfrjmyam1g 在本例中,用户 ID 为 011737558837375720776,搜索引擎ID为mbfrjmyam。

您可能已经注意到,搜索引擎 ID 比应有的值少了 2 个字符。

  1. 我在任何地方都没有看到范围为“https://www.googleapis.com/auth/cse https://www.googleapis.com/auth/cse“。我刚刚从 stackoverflow 的帖子中复制了它。

我知道这是一个很长的问题,但我希望这将帮助下一个人看这个并考虑这些要点。

有人知道为什么是401吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 自定义搜索 API - 引擎检索引擎数据失败 的相关文章

  • 在 WooCommerce 3.3 中使用 Google Map API 计算结帐距离

    我已经发布几个月前有类似的问题 https stackoverflow com questions 46348735 calculated distance shipping cart fee via google api in wooco
  • Google People API 是否支持查询功能

    google people api支持查询功能吗 目前 较旧的 api contact google api 允许您使用查询参数 q 进行简单的文本搜索 想知道 people api 是否支持这个 谢谢 德里克 Google People
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • 上传时的 Google Drive API——这些额外的空行从何而来?

    总结一下该程序 我从我的 Google 云端硬盘下载一个文件 然后在本地计算机中打开并读取一个文件 file a txt 然后在我的计算机中打开另一个文件 file b txt 处于附加模式 并且在使用这个新的 file b 更新我的 Go
  • 从 Azure 调用 Google API:“访问被拒绝”

    我正在尝试创建一个可以管理 Google 日历并访问 Google People 的聊天机器人 我开发了代码 它可以完美地离线工作 当尝试在线上传所有内容时就会出现问题 代码是C 语言 在微软提供的模板之上开发 当您在 Azure 上加载代
  • 谷歌日历手表过期时间超过1个月怎么办?

    我将我的 CRM 系统与 Google 日历同步 为此 我要求push notifications从我的用户 Google 日历到我的系统 我已经成功创建了手表 并将过期时间设置为2030年 但是当我收到手表事件的响应时 它显示手表的过期时
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • Google API 令牌端点 POST 返回错误请求 400

    我正在尝试用一次性 Google Plus 授权代码换取访问令牌 但我不断收到 400 Bad Request 我正在使用VB NET 这是代码 We should now have a good one time authorizatio
  • 在 Play Services 8.3 中的新 Google 登录中获取人员详细信息

    我正在尝试使用 Play Services 8 3 中引入的新 Google Sign In API 获取用户的个人资料 除了显示名称 电子邮件和 ID 之外 我还需要用户的性别 Plus PeopleApi getCurrentPerso
  • Google AJAX API - 如何获得 4 个以上结果?

    我使用下面的 google API ajax 来获取特定搜索词的图像 这是在一个WinForms app 下面的链接似乎有效 但它只返回 4 个结果 通过 JSON 有谁知道如何哄得更多吗 显然必须有另一个参数来请求更多或分页结果 但我似乎
  • Google Translate API(付费)与 Google Translate API(免费)?

    我的应用程序需要翻译 API 服务 并选择了谷歌翻译API https cloud google com translate docs 这需要花钱并且需要针对 Google API 进行身份验证 但在搜索过程中 我发现了这个链接 它看起来是
  • 错误“RESOURCE_EXHAUSTED”的原因是什么?

    我有一个 WordPress 博客 当我登录到仪表板时 顶部突出显示了以下异常 Ga Lib Api Request Exception There was an error while contacting Google API erro
  • 脚本在 SpreadsheetApp.openById 上失败 - 需要权限

    我有一个 onOpen 函数 可以在电子表格中创建自定义菜单 它已经工作了一年多 但几天前它停止工作了 当我查看执行记录时 我得到 执行失败 您无权调用 SpreadsheetApp openById 所需权限 https www goog
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • 如何以编程方式下载公共 Google Drive 文件?

    我有一个后端服务器 必须下载 Google 云端硬盘上的文件 该文件已由所有者向公众共享 我们的客户通过电子邮件向我们发送链接 我们从电子邮件中获取链接 不涉及 UI 该程序需要获取或下载文件并离线处理它 谷歌示例似乎是使用 UI 运行的
  • Google Drive V3、Google API 客户端 2.0 - 批量上传失败

    使用 Google Drive V3 和 API v2 0 主分支进行批量上传失败 我已经修改了https github com google google api php client blob master examples batch
  • Python / Google Maps API - TimeoutError: [Errno 60] 从终端调用函数时操作超时

    我正在从终端调用一个函数 该函数连接到 Google 地图 API 以返回某个地点的坐标 但是 我收到这个错误 sock connect self host self port TimeoutError Errno 60 Operation
  • Gmail API 获取邮件的限制

    据我了解 目前 google 的 API 每秒向其 API 提供 10 个请求 从他们的文档中 https developers google com gmail api v1 reference quota 而且对于舒适地处理邮件来说 它
  • iOS 将文件上传到 Google Cloud Storage - 收到 401:“需要登录”

    我无法弄清楚如何将文件上传到 Cloud Storage 的公共访问存储桶 我已经设置了一个存储桶并将其 ACL 设置为对所有用户进行读取和写入 我已启用 Cloud Storage JSON API 和 Cloud Storage API

随机推荐