Quản lý tài khoản người dùng

Directory API cung cấp các phương thức lập trình để tạo, cập nhật và xoá người dùng. Bạn cũng có thể xem thông tin về từng người dùng hoặc danh sách người dùng đáp ứng các tiêu chí đã chỉ định. Sau đây là ví dụ về một số thao tác cơ bản đối với người dùng.

Tạo tài khoản người dùng

Bạn có thể thêm tài khoản người dùng vào bất kỳ miền nào trong tài khoản Google Workspace của mình. Trước khi thêm tài khoản người dùng, hãy xác nhận quyền sở hữu miền .

Nếu đã nâng cấp tài khoản Gmail cá nhân lên tài khoản email doanh nghiệp bằng tên miền riêng, bạn sẽ không thể tạo tài khoản người dùng mới cho đến khi mở khoá các chế độ cài đặt bổ sung của Google Workspace. Để biết thông tin chi tiết, hãy xem bài viết Các tài khoản email doanh nghiệp trên Google Workspace đã được cập nhật.

Để tạo tài khoản người dùng bằng một trong các miền của bạn, hãy sử dụng POST yêu cầu sau đây và thêm thông tin uỷ quyền được mô tả trong Tìm hiểu về quy trình xác thực và uỷ quyền. Bạn có thể xem các phạm vi hiện có cho Directory API trong danh sách phạm vi OAuth 2.0 . Để biết các thuộc tính của chuỗi truy vấn yêu cầu, hãy xem phương thức users.insert.

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

Tất cả các yêu cầu tạo đều yêu cầu bạn gửi thông tin cần thiết để thực hiện yêu cầu. Nếu bạn sử dụng thư viện ứng dụng, các thư viện này sẽ chuyển đổi đối tượng dữ liệu từ ngôn ngữ bạn chọn thành đối tượng được định dạng JSON.

Yêu cầu JSON

JSON sau đây cho thấy yêu cầu mẫu để tạo người dùng. Để xem danh sách đầy đủ các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về 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
}

Nếu tỷ lệ truy vấn cho các yêu cầu tạo quá cao, bạn có thể nhận được phản hồi 503 HTTP từ máy chủ API cho biết rằng bạn đã vượt quá hạn mức. Nếu bạn nhận được các phản hồi này, hãy sử dụng thuật toán đợi luỹ thừa để thử lại các yêu cầu.

Khi bạn tạo tài khoản mới, hãy lưu ý những điều sau:

  • Nếu Tài khoản Google đã mua giấy phép email, thì tài khoản người dùng mới sẽ tự động được chỉ định một hộp thư. Quá trình chỉ định này có thể mất vài phút để hoàn tất và kích hoạt.
  • Dịch vụ API sẽ tự động bỏ qua việc chỉnh sửa trường chỉ đọc trong yêu cầu, chẳng hạn như isAdmin.
  • Số lượng miền tối đa được phép trong một tài khoản là 600 (1 miền chính + 599 miền bổ sung).
  • Nếu người dùng không được chỉ định cho một đơn vị tổ chức cụ thể khi tài khoản người dùng được tạo, thì tài khoản đó sẽ nằm trong đơn vị tổ chức cấp cao nhất. Đơn vị tổ chức của người dùng sẽ quyết định các dịch vụ Google Workspace mà người dùng có quyền truy cập. Nếu người dùng được chuyển sang một tổ chức mới, quyền truy cập của người dùng sẽ thay đổi. Để biết thêm thông tin về cấu trúc tổ chức, hãy xem trung tâm trợ giúp dành cho quản trị viên. Để biết thêm thông tin về cách chuyển người dùng sang một tổ chức khác, hãy xem bài viết Cập nhật người dùng.
  • Bạn phải có password cho tài khoản người dùng mới. Nếu bạn chỉ định hashFunction, thì mật khẩu phải là khoá băm hợp lệ. Nếu bạn không chỉ định, mật khẩu phải ở dạng dòng chữ rõ ràng và có từ 8 đến 100 ký tự ASCII. Để biết thêm thông tin, hãy xem Tài liệu tham khảo về API.
  • Đối với người dùng có gói linh hoạt cho Google Workspace, việc tạo người dùng bằng API này sẽ ảnh hưởng đến chi phí và dẫn đến việc tài khoản thanh toán của khách hàng bị tính phí. Để biết thêm thông tin, hãy xem thông tin thanh toán API .
  • Tài khoản Google Workspace có thể bao gồm bất kỳ miền nào của bạn. Trong tài khoản có nhiều miền, người dùng trong một miền có thể chia sẻ dịch vụ với người dùng trong các miền tài khoản khác. Để biết thêm thông tin về người dùng trong nhiều miền, hãy xem thông tin về API cho nhiều miền.
  • Có thể có các tài khoản xung đột. Hãy kiểm tra xem người mà bạn định thêm vào đã có Tài khoản Google hay chưa. Sau đó, làm theo các bước để tránh xung đột với các tài khoản đó. Hãy xem bài viết Tìm và khắc phục tài khoản xung đột.
  • Có thể có các tài khoản khách truy cập. Nếu người dùng mời những người bên ngoài tổ chức của bạn và không có Tài khoản Google cộng tác trên Drive, họ sẽ nhận được tài khoản khách truy cập theo định dạng visitor's_username@your_domain.com. Nếu bạn thêm người dùng có cùng tên người dùng với tài khoản khách truy cập, thì tài khoản đó sẽ được chuyển đổi thành tài khoản Google Workspace đầy đủ. Tài khoản này sẽ giữ nguyên các quyền hiện tại đối với tệp trên Drive. Hãy xem bài viết Chia sẻ tài liệu với khách truy cập.

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Cùng với mã trạng thái, phản hồi sẽ trả về các thuộc tính cho tài khoản người dùng mới.

Cập nhật tài khoản người dùng

Để cập nhật tài khoản người dùng, hãy sử dụng yêu cầu PUT sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng duy nhất hoặc một trong các địa chỉ email đại diện của người dùng.

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

Cả nội dung yêu cầu và phản hồi đều chứa một thực thể của User. Tuy nhiên, Directory API hỗ trợ ngữ nghĩa vá lỗi, vì vậy, bạn chỉ cần gửi các trường đã cập nhật trong yêu cầu.

Yêu cầu mẫu

Trong ví dụ bên dưới, givenName của người dùng là "Elizabeth" khi tài khoản người dùng được tạo và chỉ có địa chỉ email công việc được cung cấp.

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

Yêu cầu sau đây sẽ cập nhật givenName từ "Elizabeth" thành "Liz" và cũng thêm địa chỉ email nhà. Xin lưu ý rằng cả hai địa chỉ email đều được cung cấp đầy đủ vì trường này là một mảng.

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"
    }
  ]
}

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200 và tài nguyên User có các trường đã cập nhật.

Hãy lưu ý những điều sau khi cập nhật tên tài khoản của người dùng:

  • Việc đổi tên tài khoản người dùng sẽ thay đổi địa chỉ email chính của người dùng và miền được dùng khi truy xuất thông tin của người dùng này. Trước khi đổi tên người dùng, bạn nên đăng xuất người dùng khỏi tất cả các phiên trình duyệt và dịch vụ.
  • Quá trình đổi tên tài khoản người dùng có thể mất tối đa 10 phút để áp dụng cho tất cả các dịch vụ.
  • Khi bạn đổi tên người dùng, tên người dùng cũ sẽ được giữ lại làm email đại diện để đảm bảo việc gửi email liên tục trong trường hợp có chế độ chuyển tiếp email và không dùng được làm tên người dùng mới.
  • Nhìn chung, bạn cũng không nên sử dụng địa chỉ email của người dùng làm khoá cho dữ liệu liên tục vì địa chỉ email có thể thay đổi.
  • Để xem danh sách đầy đủ các ảnh hưởng của việc đổi tên người dùng trên các ứng dụng Google Workspace, hãy xem trung tâm trợ giúp dành cho quản trị viên.

Đặt người dùng làm quản trị viên

Để đặt người dùng làm quản trị viên cấp cao, hãy sử dụng yêu cầu POST sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng duy nhất hoặc một trong các địa chỉ email đại diện của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API. Để biết thêm thông tin về quản trị viên cấp cao, hãy xem trung tâm trợ giúp dành cho quản trị viên.

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

Người dùng phải tồn tại trước khi được đặt làm quản trị viên cấp cao. Chỉ quản trị viên cấp cao của tài khoản mới có thể thực hiện thao tác này; quản trị viên được uỷ quyền không thể thăng cấp người dùng lên vai trò quản trị. Để biết thông tin về cách sử dụng Bảng điều khiển dành cho quản trị viên của Google để thay đổi vai trò của quản trị viên, hãy xem trung tâm trợ giúp dành cho quản trị viên.

Yêu cầu JSON

Trong ví dụ này, người dùng có userKeyliz@example.com đã trở thành quản trị viên cấp cao:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200.

Quản lý mối quan hệ của người dùng

Directory API sử dụng trường relations để xác định các loại mối quan hệ giữa người dùng. Trong môi trường doanh nghiệp, mọi người thường sử dụng trường này cho mối quan hệ giữa người quản lý và nhân viên cũng như mối quan hệ giữa trợ lý và nhân viên, nhưng trường này cũng hỗ trợ nhiều loại khác. Mối quan hệ này sẽ xuất hiện trong thẻ "Người liên quan" của người dùng trong mọi ứng dụng Google Workspace hỗ trợ thẻ này. Để biết ví dụ về nơi thẻ này xuất hiện, hãy xem bài viết Thêm thông tin vào hồ sơ người dùng trong Danh bạ.

Tạo mối quan hệ giữa người dùng

Bạn chỉ có thể xác định mối quan hệ theo một hướng, bắt đầu từ người dùng "sở hữu" có bản ghi bao gồm trường relations. type mô tả mối quan hệ của người khác với người dùng sở hữu. Ví dụ: trong mối quan hệ giữa người quản lý và nhân viên, nhân viên là người dùng sở hữu và bạn thêm trường relations vào tài khoản của họ với loại manager. Để biết các loại được phép, hãy xem tài liệu tham khảo về đối tượng User.

Thiết lập mối quan hệ bằng cách tạo hoặc cập nhật người dùng sở hữu bằng nội dung yêu cầu JSON bao gồm trường relations. Bạn có thể tạo nhiều mối quan hệ trong một yêu cầu.

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

Cập nhật hoặc xoá mối quan hệ

Bạn chỉ có thể cập nhật toàn bộ trường relations – bạn không thể giải quyết từng người được liệt kê để thay đổi loại mối quan hệ hoặc xoá họ. Trong ví dụ trước, để xoá mối quan hệ hiện có với người quản lý và đặt người quản lý có đường nét đứt làm người quản lý của người dùng sở hữu, hãy cập nhật tài khoản của người dùng sở hữu bằng tất cả các giá trị của trường mà bạn muốn.

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

Để xoá tất cả mối quan hệ của người dùng sở hữu, hãy đặt relations thành trống:

{
  "relations": []
}

Truy xuất người dùng

Để truy xuất người dùng, hãy sử dụng yêu cầu GET sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng duy nhất hoặc một trong các địa chỉ email đại diện của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Ví dụ này trả về các thuộc tính của tài khoản người dùng cho người dùng có địa chỉ email chính hoặc địa chỉ email đại diện là liz@example.com:

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

Phản hồi JSON

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Cùng với mã trạng thái, phản hồi sẽ trả về các thuộc tính cho tài khoản người dùng.

{
 "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
}

Truy xuất tất cả người dùng trong một miền

Để truy xuất tất cả người dùng trong cùng một miền, hãy sử dụng yêu cầu GET sau đây và thêm thông tin uỷ quyền được mô tả trong Uỷ quyền cho các yêu cầu. Để dễ đọc, ví dụ này sử dụng dấu xuống dòng:

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*

Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

Phản hồi JSON

Trong ví dụ này, tất cả người dùng trong miền example.com sẽ được trả về với tối đa 2 miền người dùng trên mỗi trang phản hồi. Có một nextPageToken cho danh sách người dùng tiếp theo trong phản hồi này. Theo mặc định, hệ thống sẽ trả về danh sách 100 người dùng theo thứ tự bảng chữ cái của địa chỉ email người dùng:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Cùng với mã trạng thái, phản hồi sẽ trả về 2 tài khoản người dùng trong miền example.com (maxResults=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",
   "suspensionTime": "2013-02-05T10:30:03.325Z",
   "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"
}

Truy xuất tất cả người dùng trong tài khoản

Để truy xuất tất cả người dùng trong một tài khoản (có thể bao gồm nhiều miền), hãy sử dụng yêu cầu GET sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. Để dễ đọc, ví dụ này sử dụng dấu xuống dòng:

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
  • Chuỗi truy vấn customer là giá trị my_customer hoặc customerId.
  • Sử dụng chuỗi my_customer để biểu thị customerId của tài khoản.
  • Là quản trị viên đại lý bán lại, hãy sử dụng customerId của khách hàng được bán lại. Đối với customerId, hãy sử dụng tên miền chính của tài khoản trong yêu cầu của thao tác Truy xuất tất cả người dùng trong một miền. Phản hồi kết quả có giá trị customerId.
  • Chuỗi truy vấn orderBy không bắt buộc sẽ xác định xem danh sách được sắp xếp theo địa chỉ email chính, họ hoặc tên của người dùng hay không. Khi sử dụng orderBy, bạn cũng có thể sử dụng chuỗi truy vấn sortOrder để liệt kê kết quả theo thứ tự tăng dần hoặc giảm dần.
  • Chuỗi truy vấn query không bắt buộc cho phép tìm kiếm trên nhiều trường trong hồ sơ người dùng, bao gồm cả trường cốt lõi và trường tuỳ chỉnh. Hãy xem bài viết Tìm kiếm người dùng để biết ví dụ.

Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

Trong ví dụ này, quản trị viên tài khoản đang yêu cầu trả về tất cả người dùng trong tài khoản với một mục nhập người dùng trên mỗi trang phản hồi. nextPageToken chuyển đến trang kết quả tiếp theo:

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

Trong ví dụ này, quản trị viên đại lý bán lại đang yêu cầu tất cả người dùng trong tài khoản được bán lại có giá trị customerIdC03az79cb.

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

Phản hồi JSON

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Cùng với mã trạng thái, phản hồi sẽ trả về tất cả người dùng trong tài khoản này:

{
 "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"
}

Truy xuất người dùng bị xoá gần đây

Để truy xuất tất cả người dùng bị xoá trong khoảng thời gian 20 ngày qua khỏi một tài khoản hoặc khỏi một trong các miền của tài khoản, hãy sử dụng các yêu cầu GET sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. Để khôi phục người dùng, hãy xem bài viết Khôi phục người dùng.

Để truy xuất người dùng bị xoá trong khoảng thời gian 20 ngày qua khỏi miền chính hoặc miền phụ của tài khoản, hãy sử dụng yêu cầu GET sau đây. Chuỗi truy vấn domain là tên miền chính của miền. Để biết các thuộc tính của yêu cầu và phản hồi của người dùng, hãy xem Tài liệu tham khảo về API. Để dễ đọc, ví dụ này sử dụng dấu xuống dòng:

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

Nếu một tài khoản có nhiều miền, bạn có thể truy xuất người dùng bị xoá trong khoảng thời gian 20 ngày qua khỏi toàn bộ tài khoản, hãy sử dụng yêu cầu GET sau đây. Để dễ đọc, ví dụ này sử dụng dấu xuống dòng:

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
  • Chuỗi truy vấn customer là giá trị my_customer hoặc customerId.
  • Là quản trị viên tài khoản, hãy sử dụng chuỗi my_customer để biểu thị customerId của tài khoản.
  • Là quản trị viên đại lý bán lại, hãy sử dụng customerId của khách hàng được bán lại. Đối với customerId, hãy sử dụng tên miền chính của tài khoản trong yêu cầu của thao tác Truy xuất tất cả người dùng trong một miền. Phản hồi kết quả có giá trị customerId.

Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

Trong ví dụ này, quản trị viên tài khoản đang yêu cầu tất cả người dùng bị xoá trong tài khoản:

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

Phản hồi JSON

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Cùng với mã trạng thái, phản hồi sẽ trả về tất cả người dùng trong tài khoản bị xoá trong vòng 20 ngày qua:

{
 "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"
}

Truy xuất ảnh của người dùng

API sẽ truy xuất một hình thu nhỏ của ảnh, ảnh hồ sơ mới nhất trên Google. Để truy xuất ảnh mới nhất của người dùng, hãy sử dụng yêu cầu GET sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng hoặc bất kỳ email đại diện nào của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Trong ví dụ này, ảnh mới nhất của liz@example.com sẽ được trả về:

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

Phản hồi JSON

Phản hồi thành công sẽ trả về mã trạng thái 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"
}

Cơ chế mã hoá base64 an toàn cho web của API đối với ảnh của bạn tương tự như 'base64url' RFC 4648. Điều này có nghĩa là:

  • Ký tự dấu gạch chéo (/) được thay thế bằng ký tự dấu gạch dưới (_).
  • Ký tự dấu cộng (+) được thay thế bằng ký tự dấu gạch ngang (-).
  • Ký tự dấu bằng (=) được thay thế bằng dấu hoa thị (*).
  • Đối với phần đệm, ký tự dấu chấm (.) được sử dụng thay vì định nghĩa baseURL RFC-4648 sử dụng dấu bằng (=) cho phần đệm. Việc này được thực hiện để đơn giản hoá quá trình phân tích cú pháp URL.
  • Bất kể kích thước của ảnh được tải lên, API sẽ giảm kích thước ảnh theo tỷ lệ xuống còn 96x96 pixel.

Nếu bạn cần tạo các đường liên kết tương thích từ JavaScript, Thư viện Google Closure sẽ bao gồm các hàm mã hoá và giải mã Base64 được phát hành theo giấy phép Apache.

Truy xuất người dùng không phải là quản trị viên

Mặc dù chỉ quản trị viên mới có thể sửa đổi tài khoản người dùng, nhưng mọi người dùng trên miền đều có thể đọc hồ sơ người dùng. Người dùng không phải là quản trị viên có thể đưa ra yêu cầu users.get hoặc users.list với tham số viewType bằng domain_public để truy xuất hồ sơ công khai của người dùng. Phạm vi https://www.googleapis.com/auth/admin.directory.user.readonly là lý tưởng cho trường hợp sử dụng này.

Chế độ xem domain_public cho phép người dùng không phải là quản trị viên truy cập vào một tập hợp tiêu chuẩn các trường cốt lõi. Đối với trường tuỳ chỉnh, bạn có thể chọn xem trường đó là công khai hay riêng tư khi xác định giản đồ.

Cập nhật ảnh của người dùng

Để cập nhật ảnh của người dùng, hãy sử dụng yêu cầu PUT sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng hoặc bất kỳ email nào trong số các email đại diện của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Trong ví dụ này, ảnh của liz@example.com sẽ được cập nhật:

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

Khi cập nhật ảnh, API sẽ bỏ qua heightwidth.

Phản hồi JSON

Phản hồi thành công sẽ trả về mã trạng thái 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"
}

Xoá ảnh của người dùng

Để xoá ảnh của người dùng, hãy sử dụng yêu cầu DELETE sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng hoặc bất kỳ email nào trong số các email đại diện của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Sau khi bị xoá, ảnh của người dùng sẽ không xuất hiện. Bất cứ nơi nào yêu cầu ảnh của người dùng, hệ thống sẽ hiển thị hình bóng.

Xoá tài khoản người dùng

Để xoá tài khoản người dùng, hãy sử dụng yêu cầu DELETE sau đây và thêm thông tin uỷ quyền được mô tả trong Uỷ quyền cho các yêu cầu. userKey có thể là địa chỉ email chính của người dùng, id người dùng duy nhất hoặc một trong các địa chỉ email đại diện của người dùng. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Trong ví dụ này, tài khoản người dùng liz@example.com sẽ bị xoá:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200.

Trước khi bạn xoá người dùng, hãy cân nhắc những điều sau:

Khôi phục tài khoản người dùng

Người dùng bị xoá trong vòng 20 ngày qua phải đáp ứng một số điều kiện thì tài khoản của người dùng đó mới có thể được khôi phục.

Để khôi phục tài khoản người dùng, hãy sử dụng yêu cầu POST sau đây và thêm thông tin uỷ quyền được mô tả trong bài viết Uỷ quyền cho các yêu cầu. The userKeyid người dùng duy nhất có trong phản hồi của thao tác Truy xuất người dùng bị xoá trong vòng 20 ngày qua. Bạn không thể sử dụng địa chỉ email chính của người dùng hoặc một trong các địa chỉ email đại diện của người dùng trong userKey cho thao tác này. Để biết các thuộc tính của yêu cầu và phản hồi, hãy xem Tài liệu tham khảo về API.

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

Trong ví dụ này, người dùng liz@example.com sẽ được khôi phục. Tất cả các thuộc tính tài khoản trước đây của người dùng này sẽ được khôi phục:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 204. Để xem tài khoản của người dùng đã khôi phục, hãy sử dụng thao tác Truy xuất người dùng.