จัดการบัญชีผู้ใช้

Directory API มีเมธอดแบบเป็นโปรแกรมสำหรับสร้าง อัปเดต และลบผู้ใช้ นอกจากนี้ คุณยังดูข้อมูลเกี่ยวกับผู้ใช้แต่ละรายหรือรายชื่อผู้ใช้ที่ตรงตามเกณฑ์ที่ระบุได้ด้วย ตัวอย่างการดำเนินการพื้นฐานบางอย่างของผู้ใช้มีดังนี้

สร้างบัญชีผู้ใช้

คุณสามารถเพิ่มบัญชีผู้ใช้ลงในโดเมนของบัญชี Google Workspace ได้ โปรดยืนยันการเป็นเจ้าของโดเมนก่อนเพิ่มบัญชีผู้ใช้

หากคุณอัปเกรดบัญชี Gmail ส่วนตัวเป็นบัญชีอีเมลธุรกิจที่มีชื่อโดเมนของคุณเอง คุณจะสร้างบัญชีผู้ใช้ใหม่ไม่ได้จนกว่าจะปลดล็อกการตั้งค่า Google Workspace เพิ่มเติม โปรดดูรายละเอียดที่ หัวข้อบัญชีอีเมลธุรกิจของ Google Workspace ได้รับการอัปเดตแล้ว

หากต้องการสร้างบัญชีผู้ใช้โดยใช้โดเมนโดเมนใดโดเมนหนึ่ง ให้ใช้POST คำขอต่อไปนี้และรวมการให้สิทธิ์ที่อธิบายไว้ใน หัวข้อข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ คุณสามารถดูขอบเขตที่ใช้ได้สำหรับ Directory API ในรายการขอบเขต OAuth 2.0 ดูพร็อพเพอร์ตี้สตริงคำค้นหาของคำขอได้ที่ 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
}

หากอัตราคำค้นหาสำหรับคำขอสร้างสูงเกินไป คุณอาจได้รับการตอบกลับ HTTP 503 จากเซิร์ฟเวอร์ API ซึ่งบ่งบอกว่าคุณใช้โควต้าเกินแล้ว หากได้รับการตอบกลับเหล่านี้ ให้ใช้อัลกอริทึมการรอแบบทวีคูณเพื่อลองส่งคำขออีกครั้ง

เมื่อสร้างบัญชีใหม่ โปรดทราบสิ่งต่อไปนี้

  • หากบัญชี Google ซื้อใบอนุญาตอีเมลไว้ ระบบจะกำหนดกล่องจดหมายให้กับบัญชีผู้ใช้ใหม่โดยอัตโนมัติ การกำหนดนี้อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์และเปิดใช้งาน
  • บริการ API จะละเว้นการแก้ไขช่องแบบอ่านอย่างเดียวในคำขอ เช่น isAdmin โดยไม่มีการแจ้งเตือน
  • จำนวนโดเมนสูงสุดที่อนุญาตในบัญชีคือ 600 โดเมน (โดเมนหลัก 1 โดเมน + โดเมนเพิ่มเติม 599 โดเมน)
  • หากไม่ได้กำหนดผู้ใช้ไว้ในหน่วยขององค์กรที่เฉพาะเจาะจงเมื่อสร้างบัญชีผู้ใช้ บัญชีจะอยู่ในหน่วยขององค์กรระดับบนสุด หน่วยขององค์กรของผู้ใช้จะเป็นตัวกำหนดบริการ Google Workspace ที่ผู้ใช้มีสิทธิ์เข้าถึง หากย้ายผู้ใช้ไปยังองค์กรใหม่ สิทธิ์เข้าถึงของผู้ใช้จะเปลี่ยนแปลง ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างองค์กร ได้ที่ ศูนย์ช่วยเหลือของผู้ดูแลระบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการย้ายผู้ใช้ไปยังองค์กรอื่นได้ที่ หัวข้อ อัปเดตผู้ใช้
  • บัญชีผู้ใช้ใหม่ต้องมี password หากระบุ hashFunction รหัสผ่านต้องเป็นคีย์แฮชที่ถูกต้อง หากไม่ได้ระบุ รหัสผ่านควรเป็นข้อความที่โอนหรือจัดเก็บได้โดยไม่ต้องเข้ารหัสและมีความยาวระหว่าง 8-100 อักขระ ASCII ดูข้อมูลเพิ่มเติมได้ที่ เอกสารอ้างอิง API
  • สำหรับผู้ใช้ในแพ็กเกจแบบยืดหยุ่นสำหรับ Google Workspace การสร้างผู้ใช้โดยใช้ API นี้จะส่งผลกระทบทางการเงินและทำให้มีการเรียกเก็บเงินจากบัญชีสำหรับการเรียกเก็บเงินของลูกค้า ดูข้อมูลเพิ่มเติมได้ที่ ข้อมูลสำหรับการเรียกเก็บเงินของ API
  • บัญชี Google Workspace สามารถมีโดเมนใดก็ได้ ในบัญชีที่มีหลายโดเมน ผู้ใช้ในโดเมนหนึ่งสามารถแชร์บริการกับผู้ใช้ในโดเมนอื่นๆ ของบัญชีได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ในหลาย โดเมนได้ที่ ข้อมูล API หลายโดเมน
  • อาจมีบัญชีที่ทับซ้อนกัน ตรวจสอบว่าบุคคลที่คุณต้องการเพิ่มมีบัญชี Google อยู่แล้วหรือไม่ จากนั้นทำตามขั้นตอนเพื่อหลีกเลี่ยงไม่ให้บัญชีทับซ้อนกัน โปรดดูหัวข้อ ค้นหาและแก้ไขบัญชีที่ทับซ้อนกัน
  • อาจมีบัญชีผู้เข้าชม หากผู้ใช้เชิญผู้อื่นจากนอกองค์กรที่ไม่มีบัญชี Google เพื่อทำงานร่วมกันในไดรฟ์ บุคคลเหล่านั้นจะได้รับบัญชีผู้เข้าชมในรูปแบบ visitor's_username@your_domain.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" และเพิ่มอีเมลส่วนตัวด้วย โปรดทราบว่ามีการระบุอีเมลทั้ง 2 รายการแบบเต็มเนื่องจากช่องนี้เป็นอาร์เรย์

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 ดู เอกสารอ้างอิง API ดูข้อมูลเพิ่มเติมเกี่ยวกับผู้ดูแลระบบขั้นสูงได้ที่ ศูนย์ช่วยเหลือของผู้ดูแลระบบ

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

ผู้ใช้ต้องมีอยู่ก่อนจึงจะกำหนดให้เป็นผู้ดูแลระบบขั้นสูงได้ การดำเนินการนี้จะทำได้โดยผู้ดูแลระบบขั้นสูงของบัญชีเท่านั้น ผู้ดูแลระบบที่ได้รับมอบสิทธิ์จะเลื่อนระดับผู้ใช้ให้มีบทบาทเป็นผู้ดูแลระบบไม่ได้ ดูข้อมูลเกี่ยวกับการใช้คอนโซลผู้ดูแลระบบของ Google เพื่อเปลี่ยนบทบาทของผู้ดูแลระบบได้ที่ ศูนย์ช่วยเหลือของผู้ดูแลระบบ

คำขอ 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 อธิบายความสัมพันธ์ของบุคคลอื่นกับผู้ใช้เจ้าของ ตัวอย่างเช่น ในความสัมพันธ์ระหว่างผู้จัดการกับพนักงาน พนักงานจะเป็นผู้ใช้เจ้าของ และคุณจะเพิ่มช่อง relations ลงในบัญชีของผู้ใช้โดยมีประเภทเป็น manager สำหรับประเภทที่อนุญาต ดูที่เอกสารอ้างอิงออบเจ็กต์ User

ตั้งค่าความสัมพันธ์โดย สร้าง หรือ อัปเดต ผู้ใช้เจ้าของด้วยเนื้อหาของคำขอ JSON ที่มีช่อง relations คุณสร้างความสัมพันธ์หลายรายการในคำขอเดียวได้

{
  "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 ดูที่ เอกสารอ้างอิง 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 การตอบกลับจะแสดงบัญชีผู้ใช้ 2 บัญชีในโดเมน 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"
}

ดึงข้อมูลผู้ใช้บัญชีทั้งหมด

หากต้องการดึงข้อมูลผู้ใช้ทั้งหมดในบัญชี ซึ่งอาจประกอบด้วยหลายโดเมน ให้ใช้ คำขอ 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_customer หรือ customerId
  • ใช้สตริง my_customer เพื่อแสดง customerId ของบัญชี
  • ในฐานะผู้ดูแลระบบตัวแทนจำหน่าย ให้ใช้ customerId ของลูกค้าที่ซื้อต่อ สำหรับ customerId ให้ใช้ชื่อโดเมนหลักของบัญชีใน การดำเนินการดึงข้อมูลผู้ใช้ทั้งหมดในโดเมนในคำขอ การตอบกลับที่ได้จะมีค่า customerId
  • สตริงคำค้นหา orderBy ที่ไม่บังคับจะเป็นตัวกำหนดว่าจะจัดเรียงรายการตามอีเมลหลัก ชื่อสกุล หรือชื่อของผู้ใช้ เมื่อใช้ orderBy คุณยังใช้สตริงคำค้นหา sortOrder เพื่อแสดงรายการผลลัพธ์ตามลำดับจากน้อยไปมากหรือมากไปน้อยได้ด้วย
  • สตริงคำค้นหา query ที่ไม่บังคับช่วยให้ค้นหาในช่องต่างๆ มากมายในโปรไฟล์ผู้ใช้ได้ ซึ่งรวมถึงทั้งช่องหลักและช่องที่กำหนดเอง ดูตัวอย่างได้ที่หัวข้อ ค้นหาผู้ใช้สำหรับ

ดูพร็อพเพอร์ตี้คำขอและการตอบกลับได้ใน เอกสารอ้างอิง API

ในตัวอย่างนี้ ผู้ดูแลระบบบัญชีขอให้แสดงผู้ใช้ทั้งหมดในบัญชีโดยมีรายการผู้ใช้ 1 รายการในหน้าการตอบกลับแต่ละหน้า 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_customer หรือ customerId
  • ในฐานะผู้ดูแลระบบบัญชี ให้ใช้สตริง 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 จะดึงข้อมูลรูปภาพขนาดย่อ 1 รูป ซึ่งเป็นรูปโปรไฟล์ Google ล่าสุด หากต้องการดึงข้อมูลรูปภาพล่าสุดของผู้ใช้ ให้ใช้คำขอ 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"
}

การเข้ารหัส Base64 ที่ปลอดภัยสำหรับเว็บของรูปภาพใน API จะคล้ายกับการเข้ารหัส "base64url" ของ RFC 4648 ซึ่งหมายความว่า

  • อักขระทับ (/) จะถูกแทนที่ด้วยอักขระขีดล่าง (_)
  • อักขระเครื่องหมายบวก (+) จะถูกแทนที่ด้วยอักขระขีดกลาง (-)
  • อักขระเครื่องหมายเท่ากับ (=) จะถูกแทนที่ด้วยเครื่องหมายดอกจัน (*)
  • สำหรับการเพิ่มระยะห่าง ระบบจะใช้อักขระจุด (.) แทนคำจำกัดความ baseURL ของ RFC-4648 ซึ่งใช้เครื่องหมายเท่ากับ (=) สำหรับการเพิ่มระยะห่าง การดำเนินการนี้มีขึ้นเพื่อลดความซับซ้อนในการแยกวิเคราะห์ URL
  • ไม่ว่ารูปภาพที่อัปโหลดจะมีขนาดเท่าใด API จะลดขนาดรูปภาพลงตามสัดส่วนเป็น 96x96 พิกเซล

หากต้องการสร้างลิงก์ที่เข้ากันได้จาก JavaScript, Google Closure Library จะมี ฟังก์ชันการเข้ารหัสและถอดรหัส Base64 ซึ่งเผยแพร่ภายใต้ใบอนุญาต Apache

ดึงข้อมูลผู้ใช้ในฐานะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

แม้ว่าจะมีเพียงผู้ดูแลระบบเท่านั้นที่แก้ไขบัญชีผู้ใช้ได้ แต่ผู้ใช้ทุกคนในโดเมนจะอ่านโปรไฟล์ผู้ใช้ได้ ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบสามารถส่งคำขอ users.get หรือ users.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 จะละเว้น height และ width

การตอบสนองของ 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 ดูที่ เอกสารอ้างอิง 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 หากต้องการดูบัญชีของผู้ใช้ที่เลิกการลบแล้ว ให้ใช้การดำเนินการดึงข้อมูลผู้ใช้