管理用户帐号

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Directory API 提供用于创建、更新和删除用户的程序化方法。您还可以获取个别用户或满足指定条件的用户的列表的相关信息。以下是一些基本用户操作的示例。

创建用户帐号

您可以将用户帐号添加到任意 Google Workspace 帐号的网域。在添加用户帐号之前,请确认域名所有权

如果您已将个人 Gmail 帐号升级为使用自己域名的企业电子邮件帐号,则在解锁其他 Google Workspace 设置之前,您无法创建新的用户帐号。有关详情,请参阅将 G Suite 企业电子邮件帐号更新为 G Suite 基本版

如需使用您的某个域名创建用户帐号,请使用以下 POST 请求,并包含了解身份验证和授权中所述的授权。您可以在 OAuth 2.0 范围列表中查看 Directory API 的可用范围。如需了解请求查询字符串属性,请参阅 users.insert() 方法。

POST https://admin.googleapis.com/admin/directory/v1/users

所有创建请求都要求您提交完成该请求所需的信息。如果您使用的是客户端库,那么它们会将数据从您选择的语言转换为 JSON 数据格式的对象。

JSON 请求

以下 JSON 展示了创建用户的示例请求。如需查看请求和响应属性的完整列表,请参阅 API 参考文档

{
"primaryEmail": "liz@example.com",
"name": {
 "givenName": "Elizabeth",
 "familyName": "Smith"
},
"suspended": false,
"password": "new user password",
"hashFunction": "SHA-1",
"changePasswordAtNextLogin": false,
"ipWhitelisted": false,
"ims": [
 {
  "type": "work",
  "protocol": "gtalk",
  "im": "liz_im@talk.example.com",
  "primary": true
 }
],
"emails": [
 {
  "address": "liz@example.com",
  "type": "home",
  "customType": "",
  "primary": true
 }
],
"addresses": [
 {
  "type": "work",
  "customType": "",
  "streetAddress": "1600 Amphitheatre Parkway",
  "locality": "Mountain View",
  "region": "CA",
  "postalCode": "94043"
 }
],
"externalIds": [
 {
  "value": "12345",
  "type": "custom",
  "customType": "employee"
 }
],
"organizations": [
 {
  "name": "Google Inc.",
  "title": "SWE",
  "primary": true,
  "type": "work",
  "description": "Software engineer"
 }
],
"phones": [
 {
  "value": "+1 nnn nnn nnnn",
  "type": "work"
 }
],
"orgUnitPath": "/corp/engineering",
"includeInGlobalAddressList": true
}

如果您的创建请求的查询率过高,您可能会收到来自 API 服务器的 HTTP 503 响应,指示已超出您的配额。如果收到这些响应,请使用指数退避算法重试您的请求。

关于新帐号的注意事项:

  • 如果 Google 帐号已购买邮件许可,系统会自动为新用户帐号分配一个邮箱。这项分配可能需要几分钟才能完成并激活。
  • 修改请求(如 isAdmin)中的只读字段会被 API 服务静默忽略。
  • 一个帐号中允许的域名数量上限为 600(1 个主域名 + 599 个其他域名)
  • 如果在创建用户帐号时没有将用户分配到特定的组织部门,则该帐号将位于顶级组织部门中。由用户的组织部门确定该用户有权访问哪些 Google Workspace 服务。如果该用户被移至新单位,该用户的访问权限会发生变化。要详细了解组织结构,请参阅管理帮助中心。要详细了解如何将用户移至其他组织,请参阅更新用户
  • 新用户帐号需要有 password。如果指定了 hashFunction,密码必须是有效的哈希密钥。如果未指定密码,则密码应采用清晰的文本格式,且长度应介于 8-100 个 ASCII 字符之间。如需了解详情,请参阅 API 参考文档
  • 如果用户使用的是 Google Workspace 弹性方案,则使用此 API 创建用户会产生货币方面的影响,并且会导致系统将向您的客户结算帐号收费。如需了解详情,请参阅 API 结算信息
  • Google Workspace 帐号可以包含您的任何域名。在多网域帐号中,一个网域中的用户可以与其他帐号网域中的用户共享服务。如需详细了解多个网域中的用户,请参阅 API 多网域信息
  • 可能存在有冲突的帐号。检查您打算添加的用户是否已拥有 Google 帐号。然后,按照相关步骤操作,以避免与这些帐号冲突。请参阅查找和解决有冲突的帐号
  • 可能存在访问者帐号。如果用户邀请单位外部没有 Google 帐号的用户在云端硬盘中协作,他们将收到访客帐号(格式为“<您用户名>@<您的域名>.com”)。如果您添加用户的用户名与访客帐号的用户名相同,则该帐号会转换为完整的 Google Workspace 帐号。该帐号将保留其当前的云端硬盘文件权限。请参阅与访问者共享文档

成功的响应将返回一个 HTTP 200 状态代码。响应将返回状态代码以及新用户帐号的属性。

更新用户帐号

如需更新用户帐号,请使用以下 PUT 请求并添加授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、唯一身份用户 id 或用户的某个别名电子邮件地址。

PUT https://admin.googleapis.com/admin/directory/v1/users/userKey

请求正文和响应正文都包含一个 User 实例。不过,Directory API 支持补丁语义,因此您只需要在请求中提交更新后的字段即可。

示例请求

在下面的示例中,用户帐号在创建时用户的 givenName 为“Elizabeth”,并且仅提供了一个工作电子邮件地址。

{
  "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith"
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    }
}

以下请求将 givenName 从“Elizabeth”更新为“Liz”,还添加了一个家庭电子邮件地址。请注意,由于该字段是数组,因此完整提供这两个电子邮件地址。

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

{
  "name": {
    "givenName": "Liz",
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    },
    {
      "address": "liz@home.com",
      "type": "home"
    }
  ]
}

成功的响应会返回 HTTP 200 状态代码和包含更新字段的 User 资源。

更新用户帐号名称时,请注意以下事项:

  • 重命名用户帐号会更改用户的主电子邮件地址以及检索此用户信息时使用的网域。在重命名用户之前,我们建议您先将用户退出所有浏览器会话和服务。
  • 重命名用户帐号的过程最长可能需要 10 分钟才能跨所有服务传播。
  • 重命名用户后,旧用户名将保留为别名,以确保在电子邮件转发设置下能继续递送邮件,并且不再用作新用户名。
  • 一般来说,我们还建议不要使用用户的电子邮件地址作为永久性数据的密钥,因为电子邮件地址可能会发生变化。
  • 如需查看重命名用户对 Google Workspace 应用的影响的完整列表,请参阅管理员帮助中心

让用户成为管理员

如需将用户变为超级用户,请使用以下 POST 请求并添加授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、唯一身份用户 id 或用户的某个别名电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档。要详细了解超级用户,请参阅管理帮助中心

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/makeAdmin

JSON 请求

在此示例中,userKey 为 liz@example.com 的用户已成为超级用户:

POST https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/makeAdmin
{
 "status": true
}

成功的响应将返回一个 HTTP 200 状态代码

管理用户关系

Directory API 使用 relations 字段定义用户之间的不同类型的关系。在业务环境中,人们通常会将此字段用于经理-员工和助理的关系,但此字段也支持许多其他类型。这种关系会显示在任何支持 Google Workspace 应用的用户的“相关人员”卡片中。如需查看该卡片可见位置的示例,请参阅将信息添加到用户的目录资料中

在用户之间创建关系

您只能从“拥有”用户(其记录包含 relations 字段)开始朝一个方向定义关系。type 描述了另一方与所有者用户之间的关系。例如,在经理-员工关系中,员工是所有者,并且您使用 manager 类型向其帐号添加 relations 字段。如需了解允许的类型,请参阅 User 对象参考。

使用包含 relations 字段的 JSON 请求正文创建更新所有者用户,以设置关系。您可以在一个请求中创建多个关系。

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_1",
      "type": "manager"
    },
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "dotted_line_manager"
    }
  ]
}

更新或删除关系

您只能更新 relations 字段,并且无法更新整个字段。您无法通过列出列出的单个人员来更改关系类型或移除这些关系。在上面的示例中,如需移除现有经理帐号关系并让虚线管理器成为所有者用户的经理,请使用您希望字段的所有值更新所有者用户帐号。

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "manager"
    }
  ]
}

如需移除所有者用户的所有关系,请将 relations 设置为空:

{
  "relations": []
}

检索用户

如需检索用户,请使用以下 GET 请求并添加授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、唯一身份用户 id 或用户的某个别名电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档

GET https://admin.googleapis.com/admin/directory/v1/users/userKey

以下示例返回主电子邮件地址或别名电子邮件地址为 liz@example.com 的用户的用户帐号属性:

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

JSON 响应

成功的响应将返回一个 HTTP 200 状态代码。响应将返回状态代码以及用户帐号的属性。

{
 "kind": "directory#user",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "name": {
  "givenName": "Liz",
  "familyName": "Smith",
  "fullName": "Liz Smith"
 },
 "isAdmin": true,
 "isDelegatedAdmin": false,
 "lastLoginTime": "2013-02-05T10:30:03.325Z",
 "creationTime": "2010-04-05T17:30:04.325Z",
 "agreedToTerms": true,
 "hashFunction": "SHA-1",
 "suspended": false,
 "changePasswordAtNextLogin": false,
 "ipWhitelisted": false,
 "ims": [
  {
   "type": "work",
   "protocol": "gtalk",
   "im": "lizim@talk.example.com",
   "primary": true
  }
 ],
 "emails": [
  {
   "address": "liz@example.com",
   "type": "home",
   "customType": "",
   "primary": true
  }
 ],
 "addresses": [
  {
   "type": "work",
   "customType": "",
   "streetAddress": "1600 Amphitheatre Parkway",
   "locality": "Mountain View",
   "region": "CA",
   "postalCode": "94043"
  }
 ],
 "externalIds": [
  {
   "value": "employee number",
   "type": "custom",
   "customType": "office"
  }
 ],
 "organizations": [
  {
   "name": "Google Inc.",
   "title": "SWE",
   "primary": true,
   "customType": "",
   "description": "Software engineer"
  }
 ],
 "phones": [
  {
   "value": "+1 nnn nnn nnnn",
   "type": "work"
  }
 ],
 "aliases": [
  "lizsmith@example.com",
  "lsmith@example.com"
 ],
 "nonEditableAliases": [
  "liz@test.com"
 ],
 "customerId": "C03az79cb",
 "orgUnitPath": "corp/engineering",
 "isMailboxSetup": true,
 "includeInGlobalAddressList": true
}

检索网域中的所有用户

如需检索同一网域中的所有用户,请使用以下 GET 请求,并包含授权请求中所述的授权。为方便阅读,此示例使用代码行返回:

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=email, givenName, or familyName:the query's value*

如需了解请求和响应属性,请参阅 API 参考文档

JSON 响应

在本例中,example.com 网域中的所有用户在每个响应中最多会返回 2 个用户网域。此回复中的后续用户列表有 nextPageToken。默认情况下,系统会按用户电子邮件地址的字母顺序返回包含 100 个用户的列表:

GET https://admin.googleapis.com/admin/directory/v1/users?domain=example.com&maxResults=2

成功的响应将返回一个 HTTP 200 状态代码。响应将返回状态代码以及 example.com 网域 (maxResults=2) 中的 2 个用户帐号:

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "liz@example.com",
   "name": {
    "givenName": "Liz",
    "familyName": "Smith",
    "fullName": "Liz Smith"
   },
   "isAdmin": true,
   "isDelegatedAdmin": false,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "ims": [
    {
     "type": "work",
     "protocol": "gtalk",
     "im": "lizim@talk.example.com",
     "primary": true
    }
   ],
   "emails": [
    {
     "address": "liz@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "addresses": [
    {
     "type": "work",
     "customType": "",
     "streetAddress": "1600 Amphitheatre Parkway",
     "locality": "Mountain View",
     "region": "CA",
     "postalCode": "94043"
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "organizations": [
    {
     "name": "Google Inc.",
     "title": "SWE",
     "primary": true,
     "customType": "",
     "description": "Software engineer"
    }
   ],
   "phones": [
    {
     "value": "+1 nnn nnn nnnn",
     "type": "work"
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "user unique ID",
   "primaryEmail": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": true,
   "suspensionReason": "ADMIN",
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "contractor license number",
     "type": "custom",
     "customType": "work"
    }
   ],
   "aliases": [
    "second_admin@example.com"
   ],
   "nonEditableAliases": [
    "admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "next page token"
}

检索所有帐号用户

要检索帐号中可包含多个网域的所有用户,请使用以下 GET 请求并添加授权请求中所述的授权。为方便阅读,此示例使用代码行返回:

GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=user attributes
  • customer 查询字符串是 my_customercustomerId 值。
  • 使用字符串 my_customer 表示您帐号的 customerId
  • 作为转销商管理员,请使用转销商客户的customerId。对于 customerId,请在检索网域中的所有用户请求的请求中,使用帐号的主域名。生成的响应具有 customerId 值。
  • 可选的 orderBy 查询字符串决定了该列表是按用户的主电子邮件地址、姓氏还是名字进行排序。使用 orderBy 时,您还可以使用 sortOrder 查询字符串以升序或降序列出结果。
  • 可选的 query 查询字符串允许您搜索用户个人资料中的多个字段,包括核心字段和自定义字段。有关示例,请参阅搜索用户

如需了解请求和响应属性,请参阅 API 参考文档

在此示例中,某位帐号管理员要求系统返回帐号中的所有用户,并会在每个响应页面上提供一个用户条目。nextPageToken 会转到结果的后续页面:

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&maxResults=1

在此示例中,转销商管理员请求转销帐号中 customerId 值为 C03az79cb 的所有用户。

GET https://admin.googleapis.com/admin/directory/v1/users?customer=C03az79cb&maxResults=1

JSON 响应

成功的响应将返回一个 HTTP 200 状态代码。响应将返回状态代码以及此帐号中的所有用户:

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
     "second_admin@example.com"
   ],
   "nonEditableAliases": [
     "another_admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "liz@example.com",
   "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith",
    "fullName": "Elizabeth Smith"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": false,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "liz@example.com",
     "type": "home",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "bank"
    }
   ],
   "relations": [
    {
     "value": "liz",
     "type": "friend",
     "customType": ""
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "test3@example.com",
   "name": {
    "givenName": "Tester",
    "familyName": "Three",
    "fullName": "Tester Three"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "test@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "tester3@example.com"
   ],
   "nonEditableAliases": [
    "third@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "work_admin@example.com",
   "name": {
    "givenName": "Admin",
    "familyName": "Work",
    "fullName": "Admin Work"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "work_admin@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "my_alias@example.com"
   ],
   "nonEditableAliases": [
    "other_alias@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "NNNNN"
}

检索最近删除的用户

如需从帐号或用户的某个网域中检索过去 20 天内删除的所有用户,请使用以下 GET 请求并添加授权请求中所述的授权。如需恢复删除的用户,请参阅恢复删除的用户

如需从帐号的主网域或子网域检索过去 20 天内删除的用户,请使用以下 GET 请求。domain 查询字符串是网域的主域名。如需了解用户请求和响应属性,请参阅 API 参考文档。为便于阅读,此示例使用行返回值:

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&showDeleted=true
如果某个帐号有多个网域,那么您可以从整个帐号中检索过去 20 天内删除的用户,您可以使用以下 GET 请求。为提高可读性,此示例使用行返回值:
GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page&showDeleted=true
  • customer 查询字符串是 my_customercustomerId 值。
  • 作为帐号管理员,请使用字符串 my_customer 代表您帐号的 customerId
  • 作为转销商管理员,请使用转销商客户的customerId。对于 customerId,请在检索网域中的所有用户请求的请求中,使用帐号的主域名。生成的响应具有 customerId 值。

如需了解请求和响应属性,请参阅 API 参考文档

在此示例中,帐号管理员请求获取该帐号中所有已删除的用户:

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&showDeleted=true

JSON 响应

成功的响应将返回一个 HTTP 200 状态代码。响应将返回状态代码,同时返回过去 20 天内删除的所有帐号:

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user1@example.com"
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user3@example.com"
  }
 ],
 "nextPageToken": "token for next page of deleted users"
}

检索用户的照片

该 API 会检索一张照片缩略图,即最新的 Gmail Chat 个人资料照片。要检索用户的最新照片,请使用以下 GET 请求,并包含授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、用户 id 或用户的任何别名电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档

GET https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

在此示例中,系统会返回 liz@example.com 的最新照片:

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail

JSON 响应

成功的响应将返回一个 HTTP 200 状态代码

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

API 的网页安全 base64 编码类似于 RFC 4648 'base64url'。这意味着:

  • 系统会将斜杠 (/) 字符替换为下划线 (_) 字符。
  • 加号 (+) 字符会被替换为连字符 (-)。
  • 等号 (=) 字符已替换为星号 (*)。
  • 对于填充,使用的是英文句点 (.) 字符,而不是 RFC-4648 base网址 定义,后者使用等号 (=) 进行填充。这样做是为了简化网址解析。
  • 无论上传的照片大小如何,该 API 都会按比例将其缩小到 96x96 像素。

如果您需要通过 JavaScript 创建兼容的链接,则可以使用 Google Closure 库,其中提供了根据 Apache 许可发布的 Base64 编码和解码函数

以非管理员身份检索用户

虽然用户帐号只能由管理员修改,但网域中的任何用户都可以读取用户个人资料。非管理员用户可以发出 users.getusers.list 请求(其中 viewType 参数等于 domain_public),以检索用户的公开个人资料。范围 https://www.googleapis.com/auth/admin.directory.user.readonly 非常适合此用例。

domain_public 视图允许非管理员用户访问一组标准的核心字段。对于自定义字段,您可以在定义架构时选择该字段是公开字段还是私有字段。

更新用户的照片

如需更新用户的照片,请使用以下 PUT 请求,并包含授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、用户 id 或任何用户别名的电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档

PUT https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

在此示例中,更新了 liz@example.com 照片:

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail
{
"photoData": "web safe base64 encoded photo data"
}

更新照片时,API 会忽略 heightwidth

JSON 响应

成功的响应将返回一个 HTTP 200 状态代码

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

删除用户的照片

要删除用户的照片,请使用以下 DELETE 请求,并包含授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、用户 id 或任何用户别名的电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

删除后,系统将不会显示用户的照片。在任何需要用户照片的地方,都会显示轮廓。

删除用户帐号

如需删除用户帐号,请使用以下 DELETE 请求并添加授权请求中所述的授权。userKey 可以是用户的主电子邮件地址、唯一身份用户 id 或用户的某个别名电子邮件地址。如需了解请求和响应属性,请参阅 API 参考文档

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey

在此示例中,系统会删除 liz@example.com 用户帐号:

DELETE https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

成功的响应仅会返回 HTTP 200 状态代码

删除用户之前需要考虑的重要事项:

  • 删除的用户将无法再登录。
  • 有关删除用户帐号的详细信息,请参阅管理帮助中心

恢复删除的用户帐号

在过去 20 天内删除的用户必须满足某些条件才能恢复用户帐号

要取消删除用户帐号,请使用以下 POST 请求,并包含授权请求中所述的授权。userKey 是唯一身份用户名称 id,可以在检索过去 20 天内删除的用户操作中找到。userKey不能使用用户的主电子邮件地址或用户的某个别名电子邮件地址,如需了解请求和响应属性,请参阅 API 参考文档

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/undelete

在此示例中,用户 liz@example.com 被取消删除。此用户之前的所有帐号属性都将恢复:

POST https://admin.googleapis.com/admin/directory/v1/users/12309329403209438205/undelete

成功的响应仅会返回 HTTP 204 状态代码。要查看未删除的用户帐号,请使用检索用户操作。