问题标签 [google-directory-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
147 浏览

java - 创建别名有时会导致在创建用户后立即执行时找不到 404 用户密钥?

我使用 Directory API 在 Google AppEngine 中构建了一个 java web 应用程序(java/angular)。目标是创建一个用户并立即给它一个别名。

创建用户:

在状态 200(用户创建)上,我执行以下调用:

对于第二个电话,我大部分时间都会收到 404。有时它似乎工作。

创建用户后,我尝试对创建的用户执行获取请求,如下所示:

这总是有效的。然而,在执行插入别名请求时,我仍然收到 404。

似乎在发送别名请求时并未完全创建用户。

处理这个问题的最佳方法是什么?我应该实现睡眠、循环机制还是忽略 API 中的某些内容?

我正在使用 AppEngine v1.9.17 和 google-api-services-admin-directory 版本 directory_v1-rev47-1.19.0

0 投票
1 回答
134 浏览

java - 是组的唯一 ID 在多个域中保持唯一

我们正在使用 Google Directory API 来访问多个域的域组。组的 ID 对于域应该是唯一的。我想知道它是否在多个域中也是唯一的。我们正在考虑将组的信息保存在数据库中,对唯一 ID 具有唯一约束

0 投票
2 回答
2432 浏览

java - 如何在 Google Directory API 中获取超过 500 个用户的列表?

我编写了一个代码,它使用 Google Directory API 从服务器获取用户帐户信息。它专门获取用户列表,但默认情况下,系统会按照用户电子邮件地址的字母顺序返回一个包含 100 个用户的列表。这可以通过将Directory.Users.List.setMaxResults设置为 500(这是上限)来更改。但万一我将其设置为超过 500,调用会返回异常。

所以我的问题是,如果服务器有超过 500 个用户,是否可以在一个列表中获取所有用户(超过 500 个)?如果没有,是否有任何解决方法来获取所有用户?

注意-我正在使用目录 api 的 Java 客户端库

0 投票
4 回答
519 浏览

google-api - 无法完全清除 Google 用户财产

我正在尝试更新用户的辅助信息(地址、电子邮件、externalIds、ims、电话、组织、关系 -补丁页面上列出的数组等内容)。我能够成功地进行身份验证,添加新信息(一次一个或多个)并删除一个,只要它留下一个(我更新 JArray,只留下我想要的一个)。

所以,如果我有 3 个地址,我可以删除一两个地址,它会适当地更新。我可以轻松地使用补丁来清除和更新普通信息,例如名字和姓氏、重命名用户和更新密码。

但是,如果我尝试删除所有一种类型的信息,则什么也不会发生。我尝试将用户地址属性设置为 null 以及空列表或数组。通过调试,我已经验证了它发送的用户补丁是准确的,但服务器端似乎没有发生任何事情。

我尝试使用完整的更新,以及一次又一次地使用空列表或空列表,但同样的问题发生了。

我需要做什么才能完全清除这些属性之一?

示例代码:

更新:我进行了一系列测试,试图通过我能通过的任何东西,但没有任何效果。在挖掘 API 源代码后,我发现我可以调用服务的 Serializer 方法来查看它正在输出什么,我发现给它分配一个空字符串和一个空列表,一个带有一个空字符串的列表,一个新地址(对于例如)对象和带有新地址对象的列表都不起作用。然而,序列化程序按预期抛出了它们。

但是,如果我将它设置为 null,它就会被忽略。

查看补丁语义页面后,我看到以下内容:

要删除字段,请指定该字段并将其设置为空。例如,“评论”:null。您还可以通过将其设置为 null 来删除整个对象(如果它是可变的)。

查看给定的示例,他们希望数据显示{"addresses":null}为与其他任何变体(如{"addresses":""}{"addresses":[]}或)相似,而不是{"addresses":[""]}

在花了一些时间深入研究 API 代码之后,我找到了他们使用的序列化器的第 42 行,他们在其中将序列化器设置设置为忽略 null(例如,我假设有助于保持较低的数据量以进行修补)。

这适用于大多数事情,但意味着在尝试修补或更新时,序列化程序会忽略设置为 null 的值,因此服务器看不到该条目并且不会删除它。

因此,我正在努力找出解决此问题的最佳方法。我将在 StackOverflow 上查看其他一些帖子,希望我能够解决它(除非有人先得到它)。如果我这样做,我会发布一个答案。

更新 2:通过为 String 类型创建新的定制器,我能够获取代码以打印出包括 Null 的序列化字符串。每次运行代码时,它都会生成一个自定义的 NullToken(基本上是一个生成的 GUID,我在上面添加了一个词),它被设置为我要删除的字段的字符串值。然后,当序列化程序遇到一个字符串时,它会检查该字符串是否与 NullToken 匹配。如果是这样,我使用 jsonWriter 方法WriteNull()。否则,我只是将它传递给将军WriteValue()

然后我只需要自定义一系列类(传递给服务的初始化程序、作为初始化程序一部分的 NewtonsoftJsonSerializer 和添加到 NJS 设置的定制程序)并将它们设置为使用而不是默认值创建服务时。

现在我的代码正确地抽出了类似的东西{"addresses":null},我对此感到高兴。

不幸的是,它仍然不起作用。我在 API 资源管理器中进行了更多测试,并意识到即使返回的对象显示了您输入的内容的更新,但实际上并没有发生任何事情。我认为它根本没有删除,因此我为 API 本身打开了一个问题。如果结果是我自己的错,我会在这里抛出一个答案。

摘要:我现在相当确定问题出在 Google API 本身。

0 投票
1 回答
947 浏览

google-api - GoogleApps client giving SocketTimeOutException only

We wrote a client to create a user on googleapps using the GoogleNetHttpTransport, but we are getting a socketTimeoutException when making the user as Super Admin through superadmin api. Connecting User has superAdmin Privileges itself.

How to increase the ReadTimeOut/SocketTimeout when we are using the GoogleNetHttpTransport. Please find below code snippent on connecting to target and making the client

0 投票
1 回答
1491 浏览

java - 如何使用 Java 更新用户的 externalId

我正在尝试根据 Google Admin SDK 文档使用 externalId 更新用户。

在更新调用上记录响应时,我可以看到 externalId 已填写并且没有引发错误。当我尝试获取同一个用户时,没有任何 externalId 的踪迹。

当我使用 Google 的API 资源管理器并在那里填写 ExternalId 时,我得到了相同的行为。看起来 Google API 正在接受更新请求,但忽略了 ExternalId。向用户添加 externalId 的正确方法是什么?

编辑:

SGC 的回答帮助了我。setExternalIds 方法需要一个 ExternalIds 列表,我忘了这样做。Google Java Directory API 在获取 externalIds 时似乎返回了一个 json 对象,因此需要对其进行解析才能读取它。

0 投票
1 回答
100 浏览

google-app-engine - 无法通过目录 api 检索 domain_public 用户信息

我有几个客户。他们都可以使用自己的凭据通过目录 api 检索他们的 domain_public 用户信息。然后,即使帐户有效,其中一个客户端也总是返回资源未找到错误。但是,当我尝试使用具有 admin_view 的管理员用户时,一切正常。只有 domain_public viewType 返回错误。有人有这个问题吗?

0 投票
1 回答
195 浏览

api - 从 GoogleApp 配置 API 转换为新的 SDK

几年来,我们通过简单地为 Provisioning API 生成一段 XML 代码,然后使用 VBScript 进行 POST 来创建和管理我们的 GoogleApps 帐户。现在 GoogleApps 要求我们迁移到新的管理 SDK,我不明白我们如何,甚至是否可以对新系统做类似的事情。

这是我们用来首先获取身份验证令牌的代码示例:

以下是我们随后用于创建帐户的代码示例:

这可能很明显,但我有 Windows 背景,而不是 Linux;我已经完成了脚本,但不是真正的编程。(而且我根本没有做 Java 和/或其他 Web 编程的经验。)

谢谢你的帮助!!

0 投票
4 回答
3142 浏览

google-api-dotnet-client - 在 Google Apps 中提取用户的群组成员列表

我正在将我的应用程序转换为目录 API,并试图找到一种方法来使用 .NET 在 google 中提取用户的组成员身份。

查看 API 页面:Google Apps API

我看到“检索组的成员”需要组和成员的密钥。我在 service.Groups 函数中找不到这个调用。我还查看了 service.Membership 功能,但没有找到任何东西。

提取单个用户的组成员身份的 API 在哪里?

更新:

这是我试图使用的电话:

但它返回错误的请求。我可以使用此函数返回域中的所有组,但如果我指定 UserKey,我会收到 400 Bad Request。

0 投票
1 回答
304 浏览

c# - 在 Google Apps Directory API 中反序列化 ExternalID

我可以看到 JSON 响应,但无法反序列化 Google Apps 目录 API 中的 ExternalID。(C#)

给出编译器错误:

错误 1 ​​'Newtonsoft.Json.JsonConvert.DeserializeObject(string, params Newtonsoft.Json.JsonConverter[])' 的最佳重载方法匹配有一些无效参数