当前位置: 首页 > 知识库问答 >
问题:

无法使用Google服务帐户为Fusion Tables API请求访问令牌

端木存
2023-03-14

我已经成功地使用Google API(通过HTTP/REST,以及使用.NET客户端库)和Google服务帐户访问Google Drive中的html" target="_blank">文件。

最近,我正在探索融合表。我能够通过web应用程序使用具有用户授权的API。然而,当我尝试在同一个项目下使用Google服务帐户访问它时,它失败了,每当我https://www.googleapis.com/auth/fusiontables范围内:

https://www.googleapis。com/oauth2/v3/token HTTP 401{“error”:“unauthorized\u client”,“error\u description”:“unauthorized client or scope in request.”

当我删除https://www.googleapis.com/auth/fusiontables时,错误消失了,相同的代码块适用于https://www.googleapis.com/auth/drive和其他范围。

我已经检查并确认“Fusion Tables API”已经在Google开发者控制台为我的项目启用。(否则,我通过web应用程序进行的用户授权从一开始就不起作用。)

有什么我可能错过的吗?任何帮助都将不胜感激。

共有1个答案

商运锋
2023-03-14

我刚刚遇到这样一个问题:Google drive服务帐户和“未经授权的客户端或范围在请求中”

虽然乍一看似乎没有关系,但事实上是同一个问题。

从下面的代码块中删除User=svcAcct,后问题得到解决。

  ServiceAccountCredential credential;
  credential = new ServiceAccountCredential(
    new ServiceAccountCredential.Initializer(svcAcct) {
      // User = svcAcct, *** removed ***
      Scopes = new System.Collections.Generic.List<string>(scopes.Split(' '))
    }.FromCertificate(certificate)
  );

因此,以下是一般建议:

不要不必要地调用ServiceAccount tCredential。带有User=svcAcct的初始化程序。

仅当您尝试模拟不同用户时才执行此操作(条件是已在Google Apps Admin Console中正确完成适当的设置)。

尽管在某些情况下可能不会产生任何错误,但在JWT声明集中将服务帐户本身的电子邮件地址包含为“sub”字段的值时,仍存在一些意外行为。

 类似资料:
  • 我正在尝试通过服务器到服务器方法与我的应用程序启用的BigQuery API进行通信。 我已经勾选了谷歌指南上的所有方框,以尽可能用C#构建我的JWT。 我已经对所有必要的东西进行了Base64Url编码。 然而,我从谷歌得到的唯一回复是400错误请求 我已经从其他SO问题中确定了以下所有内容: 使用 RSA 和 SHA256 正确加密签名 我正在使用 POST 并使用应用程序/x-www-表单-

  • 我正在尝试使用Google Directory API验证组成员,但每次我发出请求时都无法通过403错误。 我使用的是一个服务帐户,我为它启用了“启用G套件域范围委托”选项。我还使用套件中的客户端ID添加了“https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.direc

  • 是否可以使用服务帐户访问Google Admin Report SDK? 我有一个非常基本的例子,我正在尝试运行,我总是得到一个400错误返回。我已经验证了密钥和服务ID是正确的,我甚至已经将权限委托给这个服务帐户。难道这就是不可能吗?有人有什么想法吗? 返回的错误如下: {“代码”:401,“错误”:[{“domain”:“global”,“location”:“authorization”,“

  • 我有一个G套件域,并用域范围的授权打开一个服务号。服务号在项目中也有所有者身份。我启用gmail应用编程接口并添加范围参考(https://developers.google.com/admin-sdk/directory/v1/guides/delegation“将域范围的权限委托给您的服务号”)我也启用不太安全的应用程序设置。 这是我的代码: 但是当我使用这个令牌尝试列出电子邮件时:GETht

  • 问题内容: 我们在使用服务帐户访问代理商API时遇到问题。具有客户机密的示例运行良好,但是我们需要将其部署在k8s(Kubernetes Engine)中,而无需定期刷新oauth会话(尤其是执行一次,因为在docker容器中有点难)。 尽管有很多关于如何使用python进行操作的文档,但我们找不到使用服务帐户进行访问的任何方法。 我们尝试了两个帐户,一个为默认计算引擎,一个为我们的用例直接创建。

  • 我从一个VM映像登录到一个Google Compute Engine实例,详见此处。 我想按照指示访问私有容器注册表,但在请求令牌时得到一个403错误。 尝试这个: 试图调用元数据时,我可以看到: ...但是当我试图获取令牌时,我出现了一个403错误: 我已经将默认的compute engine服务帐户设置为项目的所有者(它在编辑器上),并再次尝试,但没有运气。 我已经尝试了以下详细的SO解决方案