gpt4 book ai didi

带有服务帐户的 Google Apps API 403

转载 作者:IT王子 更新时间:2023-10-29 01:02:44 25 4
gpt4 key购买 nike

我一直在尝试对 Google 的 Admin API 进行查询以列出我的 Google Apps 组织中的所有用户。我有权在 web UI example 中进行此查询并获得结果,但是当我尝试使用服务帐户进行查询时出现 403。

import (
"fmt"
"io/ioutil"
"log"

"golang.org/x/net/context"
"golang.org/x/oauth2/google"
directory "google.golang.org/api/admin/directory_v1"
)

func main() {
serviceAccountJSON, err := ioutil.ReadFile(serviceAccountFile)
if err != nil {
log.Fatalf("Could not read service account credentials file, %s => {%s}", serviceAccountFile, err)
}
config, err := google.JWTConfigFromJSON(serviceAccountJSON,
directory.AdminDirectoryUserScope,
directory.AdminDirectoryUserReadonlyScope,
)

client, err := directory.New(config.Client(context.Background()))
if err != nil {
log.Fatalf("Could not create directory service client => {%s}", err)
}

users, err := client.Users.List().ViewType(publicDataView).Domain(domain).Do()
if err != nil {
log.Fatalf("Failed to query all users => {%s}", err)
}

for _, u := range users.Users {
fmt.Println(u.Name.FullName)
}
}

每次我执行时都会得到 403。相同的查询参数在 Try it! 部分 here 中起作用所以我不确定为什么会失败。

结果:查询所有用户失败 => {googleapi:错误 403:未授权访问此资源/api,禁止访问}

最佳答案

我知道这个问题已经有一年了,但我在任何地方都找不到任何相关信息 - 但我在遇到与您相同的错误后才设法修复它。

基本上你需要为你的配置设置一个委托(delegate)用户,例如:

func main() {
serviceAccountJSON, err := ioutil.ReadFile(serviceAccountFile)
if err != nil {
log.Fatalf("Could not read service account credentials file, %s => {%s}", serviceAccountFile, err)
}
config, err := google.JWTConfigFromJSON(serviceAccountJSON,
directory.AdminDirectoryUserScope,
directory.AdminDirectoryUserReadonlyScope,
)

// Add me
config.Subject = "someone@example.com"

client, err := directory.New(config.Client(context.Background()))
if err != nil {
log.Fatalf("Could not create directory service client => {%s}", err)
}

users, err := client.Users.List().ViewType(publicDataView).Domain(domain).Do()
if err != nil {
log.Fatalf("Failed to query all users => {%s}", err)
}

for _, u := range users.Users {
fmt.Println(u.Name.FullName)
}
}

参见 https://github.com/golang/oauth2/blob/master/google/example_test.go#L118

希望这对其他人有帮助!

关于带有服务帐户的 Google Apps API 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com