chrome.identity

คำอธิบาย

ใช้ chrome.identity API เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth2

สิทธิ์

identity

ประเภท

AccountInfo

พร็อพเพอร์ตี้

  • id

    สตริง

    ตัวระบุที่ไม่ซ้ำกันสำหรับบัญชี รหัสนี้จะไม่เปลี่ยนแปลงตลอดอายุของบัญชี

AccountStatus

Chrome เวอร์ชัน 84 ขึ้นไป

ค่าแจกแจง

"ซิงค์"
ระบุว่ามีการเปิดใช้การซิงค์สำหรับบัญชีหลัก

"ใดก็ได้"
ระบุการมีอยู่ของบัญชีหลัก (หากมี)

GetAuthTokenResult

Chrome 105 ขึ้นไป

พร็อพเพอร์ตี้

  • grantedScopes

    string[] ไม่บังคับ

    รายการขอบเขต OAuth2 ที่ให้กับส่วนขยาย

  • โทเค็น

    string ไม่บังคับ

    โทเค็นเฉพาะที่เชื่อมโยงกับคำขอ

InvalidTokenDetails

พร็อพเพอร์ตี้

  • โทเค็น

    สตริง

    โทเค็นเฉพาะที่ควรนำออกจากแคช

ProfileDetails

Chrome เวอร์ชัน 84 ขึ้นไป

พร็อพเพอร์ตี้

  • accountStatus

    AccountStatus ไม่บังคับ

    สถานะของบัญชีหลักที่ลงชื่อเข้าใช้โปรไฟล์ซึ่งควรถูกส่งคืน ProfileUserInfo สถานะบัญชีมีค่าเริ่มต้นเป็น SYNC

ProfileUserInfo

พร็อพเพอร์ตี้

  • อีเมล

    สตริง

    อีเมลของบัญชีผู้ใช้ที่ลงชื่อเข้าใช้โปรไฟล์ปัจจุบัน เว้นว่างไว้หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ หรือไม่ได้ระบุสิทธิ์ identity.email สำหรับไฟล์ Manifest

  • id

    สตริง

    ตัวระบุที่ไม่ซ้ำกันสำหรับบัญชี รหัสนี้จะไม่เปลี่ยนแปลงตลอดอายุของบัญชี เว้นว่างไว้หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ หรือ (ใน M41 ขึ้นไป) ไม่ได้ระบุสิทธิ์ไฟล์ Manifest identity.email

TokenDetails

พร็อพเพอร์ตี้

  • บัญชี

    AccountInfo ไม่บังคับ

    รหัสบัญชีที่ควรส่งคืนโทเค็น หากไม่ได้ระบุ ฟังก์ชันนี้จะใช้บัญชีจากโปรไฟล์ Chrome ซึ่งก็คือบัญชีการซิงค์ (หากมี) หรือบัญชีเว็บ Google บัญชีแรก

  • enableGranularPermissions

    บูลีน ไม่บังคับ

    Chrome เวอร์ชัน 87 ขึ้นไป

    แฟล็ก enableGranularPermissions ช่วยให้ส่วนขยายเลือกใช้ได้ตั้งแต่เนิ่นๆ ในหน้าจอความยินยอมของสิทธิ์แบบละเอียด ซึ่งจะให้สิทธิ์หรือปฏิเสธสิทธิ์ที่ส่งคำขอทีละรายการ

  • อินเทอร์แอกทีฟ

    บูลีน ไม่บังคับ

    การดึงข้อมูลโทเค็นอาจกำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ Chrome หรืออนุมัติขอบเขตที่แอปพลิเคชันขอ หากแฟล็กแบบอินเทอร์แอกทีฟคือ true getAuthToken จะแสดงข้อความแจ้งผู้ใช้ตามที่จำเป็น เมื่อระบุสถานะเป็น false หรือละเว้น getAuthToken จะแสดงผลล้มเหลวทุกครั้งที่ต้องมีข้อความแจ้ง

  • ขอบเขต

    string[] ไม่บังคับ

    รายการขอบเขต OAuth2 ที่จะส่งคำขอ

    เมื่อมีช่อง scopes อยู่ ช่องนั้นจะลบล้างรายการขอบเขตที่ระบุใน Manifest.json

WebAuthFlowDetails

พร็อพเพอร์ตี้

  • abortOnLoadForNonInteractive

    บูลีน ไม่บังคับ

    Chrome 113 ขึ้นไป

    เลือกว่าจะสิ้นสุด launchWebAuthFlow สำหรับคำขอที่ไม่มีการโต้ตอบหรือไม่หลังจากโหลดหน้าเว็บแล้ว พารามิเตอร์นี้ไม่ส่งผลต่อขั้นตอนแบบอินเทอร์แอกทีฟ

    เมื่อตั้งค่าเป็น true (ค่าเริ่มต้น) ขั้นตอนจะสิ้นสุดทันทีหลังจากการโหลดหน้าเว็บ เมื่อตั้งค่าเป็น false ขั้นตอนจะสิ้นสุดเมื่อผ่าน timeoutMsForNonInteractive แล้วเท่านั้น ซึ่งจะเป็นประโยชน์สำหรับผู้ให้บริการข้อมูลประจำตัวที่ใช้ JavaScript ในการเปลี่ยนเส้นทางหลังจากโหลดหน้าเว็บ

  • อินเทอร์แอกทีฟ

    บูลีน ไม่บังคับ

    เลือกว่าจะเปิดขั้นตอนการตรวจสอบสิทธิ์ในโหมดอินเทอร์แอกทีฟหรือไม่

    เนื่องจากขั้นตอนการตรวจสอบสิทธิ์บางขั้นตอนอาจเปลี่ยนเส้นทางไปยัง URL ของผลการค้นหาทันที launchWebAuthFlow จะซ่อนมุมมองเว็บจนกว่าการนำทางแรกจะเปลี่ยนเส้นทางไปยัง URL สุดท้าย หรือทำการโหลดหน้าเว็บที่ควรจะแสดงจนเสร็จสิ้น

    หากแฟล็ก interactive คือ true หน้าต่างจะปรากฏขึ้นเมื่อโหลดหน้าเว็บเสร็จสมบูรณ์ หากแฟล็กคือ false หรือละเว้น launchWebAuthFlow จะแสดงผลพร้อมข้อผิดพลาดหากการนำทางเริ่มต้นไม่เสร็จสมบูรณ์

    สำหรับโฟลว์ที่ใช้ JavaScript สำหรับการเปลี่ยนเส้นทาง คุณจะตั้งค่า abortOnLoadForNonInteractive เป็น false ร่วมกับการตั้งค่า timeoutMsForNonInteractive เพื่อให้หน้าเว็บมีโอกาสทำการเปลี่ยนเส้นทางได้

  • timeoutMsForNonInteractive

    หมายเลข ไม่บังคับ

    Chrome 113 ขึ้นไป

    ระยะเวลาสูงสุดในหน่วยมิลลิวินาทีที่ launchWebAuthFlow ได้รับอนุญาตให้ทำงานทั้งหมดในโหมดที่ไม่มีการโต้ตอบ จะมีผลเมื่อ interactive เท่ากับ false เท่านั้น

  • URL

    สตริง

    URL ที่เริ่มขั้นตอนการตรวจสอบสิทธิ์

เมธอด

clearAllCachedAuthTokens()

สัญญา Chrome 87 ขึ้นไป
chrome.identity.clearAllCachedAuthTokens(
  callback?: function,
)

รีเซ็ตสถานะของ Identity API ดังนี้

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

พารามิเตอร์

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำสัญญา<โมฆะ>

    Chrome 106 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

getAccounts()

สัญญา เวอร์ชันที่กำลังพัฒนา
chrome.identity.getAccounts(
  callback?: function,
)

ดึงรายการออบเจ็กต์ AccountInfo ที่อธิบายบัญชีที่ปรากฏในโปรไฟล์

getAccounts ได้รับการสนับสนุนเฉพาะในเวอร์ชันที่กำลังพัฒนา

พารามิเตอร์

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (accounts: AccountInfo[]) => void

การคืนสินค้า

  • Promise&lt;AccountInfo[]&gt;

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

getAuthToken()

สัญญา
chrome.identity.getAuthToken(
  details?: TokenDetails,
  callback?: function,
)

รับโทเค็นเพื่อการเข้าถึง OAuth2 โดยใช้รหัสไคลเอ็นต์และขอบเขตที่ระบุในส่วนoauth2ของ Manifest.json

Identity API จะแคชโทเค็นเพื่อการเข้าถึงในหน่วยความจำ คุณจึงเรียกใช้ getAuthToken แบบไม่โต้ตอบได้ทุกเมื่อที่ต้องใช้โทเค็น แคชโทเค็นจะจัดการเวลาหมดอายุโดยอัตโนมัติ

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

หมายเหตุ: เมื่อเรียกใช้ด้วย Callback ฟังก์ชันนี้จะแสดงพร็อพเพอร์ตี้ทั้ง 2 รายการเป็นอาร์กิวเมนต์ที่แยกกันซึ่งส่งไปยัง Callback แทนการส่งคืนออบเจ็กต์

พารามิเตอร์

  • รายละเอียด

    TokenDetails ไม่บังคับ

    ตัวเลือกโทเค็น

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: GetAuthTokenResult) => void

การคืนสินค้า

  • Promise&lt;GetAuthTokenResult&gt;

    Chrome 105 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

getProfileUserInfo()

สัญญา
chrome.identity.getProfileUserInfo(
  details?: ProfileDetails,
  callback?: function,
)

เรียกข้อมูลอีเมลและรหัส GAIA ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ของผู้ใช้ที่ลงชื่อเข้าใช้โปรไฟล์

ต้องมีสิทธิ์ identity.email สำหรับไฟล์ Manifest มิฉะนั้น ระบบจะแสดงผลผลลัพธ์ที่ว่างเปล่า

API นี้แตกต่างจาก identity.getAccounts ใน 2 เรื่อง ข้อมูลที่ส่งกลับมาจะใช้งานแบบออฟไลน์ได้ และจะใช้ได้กับบัญชีหลักของโปรไฟล์เท่านั้น

พารามิเตอร์

  • รายละเอียด

    ProfileDetails ไม่บังคับ

    Chrome เวอร์ชัน 84 ขึ้นไป

    ตัวเลือกโปรไฟล์

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (userInfo: ProfileUserInfo) => void

การคืนสินค้า

  • Promise&lt;ProfileUserInfo&gt;

    Chrome 106 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

getRedirectURL()

chrome.identity.getRedirectURL(
  path?: string,
)

สร้าง URL เปลี่ยนเส้นทางเพื่อใช้ใน launchWebAuthFlow

URL ที่สร้างตรงกับรูปแบบ https://<app-id>.chromiumapp.org/*

พารามิเตอร์

  • เส้นทาง

    string ไม่บังคับ

    เส้นทางจะต่อท้ายส่วนท้ายของ URL ที่สร้างขึ้น

การคืนสินค้า

  • สตริง

launchWebAuthFlow()

สัญญา
chrome.identity.launchWebAuthFlow(
  details: WebAuthFlowDetails,
  callback?: function,
)

เริ่มขั้นตอนการตรวจสอบสิทธิ์ที่ URL ที่ระบุ

วิธีนี้จะเปิดใช้ขั้นตอนการตรวจสอบสิทธิ์กับผู้ให้บริการข้อมูลประจำตัวที่ไม่ใช่ Google โดยการเปิดใช้มุมมองเว็บและไปยัง URL แรกในขั้นตอนการตรวจสอบสิทธิ์ของผู้ให้บริการ เมื่อผู้ให้บริการเปลี่ยนเส้นทางไปยัง URL ที่ตรงกับรูปแบบ https://<app-id>.chromiumapp.org/* หน้าต่างจะปิดและส่ง URL เปลี่ยนเส้นทางสุดท้ายไปยังฟังก์ชัน callback

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

พารามิเตอร์

  • รายละเอียด

    ตัวเลือกขั้นตอนของ WebAuth

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (responseUrl?: string) => void

    • responseUrl

      string ไม่บังคับ

การคืนสินค้า

  • คำมั่นสัญญา<สตริง | ไม่ระบุ>

    Chrome 106 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

removeCachedAuthToken()

สัญญา
chrome.identity.removeCachedAuthToken(
  details: InvalidTokenDetails,
  callback?: function,
)

นำโทเค็นเพื่อการเข้าถึง OAuth2 ออกจากแคชโทเค็นของ Identity API

หากพบว่าโทเค็นเพื่อการเข้าถึงไม่ถูกต้อง ควรส่งโทเค็นเพื่อนำออกCachedAuthToken เพื่อนำออกจากแคช แอปอาจเรียกโทเค็นใหม่ด้วย getAuthToken

พารามิเตอร์

  • รายละเอียด

    ข้อมูลโทเค็น

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำสัญญา<โมฆะ>

    Chrome 106 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

กิจกรรม

onSignInChanged

chrome.identity.onSignInChanged.addListener(
  callback: function,
)

เริ่มทำงานเมื่อมีการเปลี่ยนแปลงสถานะการลงชื่อเข้าใช้ของบัญชีในโปรไฟล์ของผู้ใช้

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (account: AccountInfo, signedIn: boolean) => void