Go访问Google API admin/目录时出现400错误
我有一个项目,所有用户都有一个通过G-Suit集中管理的Google帐户。现在,我需要在我的后端中提供所有G-Suit用户,以便即使他们从未登录到我的工具,也可以搜索用户。因此,我认为后端最好通过服务帐户连接到Google,以便从API加载用户。
对于身份验证,我从google cloud控制台为一个服务帐户生成了一个密钥对(带有所有者权限以供测试),将其保存为json并将其传递给应用程序。之后,我使用返回的服务启动API调用,该调用应该返回用户,不幸的是,它只返回400错误。
我已经试着缩小问题的范围,就我从调试器中看到的,头部缺少一个承载令牌,否则我没有看到任何其他不寻常的东西,所以我假设这是一个身份验证问题,但它也可能是一个完全不同的问题。
下面是我的代码:
import (
"context"
admin "google.golang.org/api/admin/directory/v1"
"google.golang.org/api/option"
"log"
)
func Test() error {
ctx := context.Background()
adminService, err := admin.NewService(ctx, option.WithCredentialsFile("./client-secret.json"))
if err != nil {
return err
}
res, err := adminService.Users.List().Customer("my_customer").Projection("full").MaxResults(500).Do()
if err != nil {
return err
}
log.Printf("Result: %v\n", res)
for _, u := range res.Users {
println(u.PrimaryEmail)
}
return nil
}
这是生成的日志消息googleapi: Error 400: Invalid Input, invalid
我试图从Google API加载我组织中的所有用户,不幸的是,每次我尝试时都会出现400错误,我不太明白为什么我使用Google API库。
1条答案
按热度按时间wljmcqd81#
建议
*注:这是作为您的项目的起点或参考。需要注意的是,社区成员不提供编码服务。
我不是Golang的Maven,但在大多数编程语言中,使用Google API和服务帐户的概念是相似的。以下是在服务帐户中使用Google API时需要遵循的一些步骤:
1.为您的服务帐户设置全域委派。
1.配置凭据时,请使用
subject
参数指定服务帐户应模拟的超级管理员电子邮件地址。这可确保服务帐户具有执行所需操作的必要权限。您可以参考this related Golang reference更多关于配置subject参数的信息。* 演示如下:*
我这边用 Python 测试了***Admin SDK API***,遇到了一个
400 error
:为了解决这个问题,我确保正确设置了Domain-Wide Delegation,并在创建服务帐户凭据时指定了
subject
参数。完成此操作后,我可以顺利使用Admin SDK API:我希望这将有助于您在当前项目中取得进展。