【发布时间】:2020-10-21 08:39:41
【问题描述】:
我使用具有范围 (https://www.googleapis.com/auth/admin.directory.user.readonly) 的服务帐户密钥来访问 Google Directory API 用户。
通过与以下相同的设置,我可以访问用户列表 API (link)。
但在尝试向用户观察 API (link) 发出请求时,返回状态 403。
这 2 个 API 需要与我的 SA 密钥具有相同范围的 user.readonly。
我的域已经过验证并添加到 GCP Console 的域验证屏幕中。
val httpTransport = GoogleNetHttpTransport.newTrustedTransport()
val jsonFactory = JacksonFactory()
val inputStream = HealthController::class.java.getResourceAsStream("/credentials.json")
?: throw FileNotFoundException("/credentials.json")
val credential = GoogleCredential.fromStream(inputStream, httpTransport, jsonFactory)
.toBuilder()
.setServiceAccountScopes(listOf(DirectoryScopes.ADMIN_DIRECTORY_USER_READONLY))
.setServiceAccountUser("admin@example.com")
.build()
service = Directory.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Some Name")
.build()
val channel = Channel()
channel.address = "https://example.com/webhook/v1/google/users"
channel.expiration = Instant.now().toEpochMilli() + 6 * 60 * 60 * 1000
channel.id = "webhook001"
channel.token = "abcxyz"
channel.type = "web_hook"
channel.payload = false
val result = service.users().watch(channel)
.setDomain("example.com")
.setViewType("domain_public")
.execute()
我将问题记录到 Google 问题跟踪器:https://issuetracker.google.com/issues/171300784
【问题讨论】:
-
您是否尝试过在令牌中使用
https://www.googleapis.com/auth/admin.directory.user范围? -
@JoseVasquez 不,我没有,我应该试试吗?
-
您的 Kotlin 编译执行哪个 JVM 版本?这可能会影响您的代码,因为 Google 不直接支持 Kotlin 的 Directory API,请查看您的版本并确认这是以下here 之一。
-
我使用 kotlin-maven-plugin 和 jvmTarget 为 1.8
-
但我本地机器上的 JVM 版本是 11
标签: kotlin google-admin-sdk google-directory-api