chrome.identity

คำอธิบาย

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

สิทธิ์

identity

ประเภท

AccountInfo

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

  • id

    สตริง

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

AccountStatus

Chrome 84 ขึ้นไป

ค่าแจกแจง

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

"ANY"
ระบุการมีอยู่ของบัญชีหลัก หากมี

GetAuthTokenResult

Chrome 105 ขึ้นไป

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

  • grantedScopes

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

    รายการขอบเขต OAuth2 ที่ให้สิทธิ์แก่ส่วนขยาย

  • โทเค็น

    สตริง ไม่บังคับ

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

InvalidTokenDetails

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

  • โทเค็น

    สตริง

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

ProfileDetails

Chrome 84 ขึ้นไป

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

  • accountStatus

    AccountStatus ไม่บังคับ

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

ProfileUserInfo

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

  • อีเมล

    สตริง

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

  • id

    สตริง

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

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 จึงซ่อน WebView จนกว่าการนำทางครั้งแรกจะเปลี่ยนเส้นทางไปยัง URL สุดท้าย หรือโหลดหน้าเว็บที่ต้องการแสดงเสร็จ

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

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

  • timeoutMsForNonInteractive

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

    Chrome 113 ขึ้นไป

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

  • URL

    สตริง

    URL ที่เริ่มโฟลว์การให้สิทธิ์

เมธอด

clearAllCachedAuthTokens()

Chrome 87 ขึ้นไป
chrome.identity.clearAllCachedAuthTokens(): Promise<void>

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

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

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

  • Promise<void>

    Chrome 106 ขึ้นไป

getAccounts()

ช่องทางเวอร์ชันที่กำลังพัฒนา
chrome.identity.getAccounts(): Promise<AccountInfo[]>

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

getAccounts รองรับเฉพาะในช่อง Dev

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

getAuthToken()

chrome.identity.getAuthToken(
  details?: TokenDetails,
)
: Promise<GetAuthTokenResult>

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

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

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

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

พารามิเตอร์

  • รายละเอียด

    TokenDetails ไม่บังคับ

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

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

getProfileUserInfo()

chrome.identity.getProfileUserInfo(
  details?: ProfileDetails,
)
: Promise<ProfileUserInfo>

ดึงข้อมูลอีเมลและรหัส Gaia ที่ปิดบังของผู้ใช้ที่ลงชื่อเข้าใช้โปรไฟล์

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

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

พารามิเตอร์

  • รายละเอียด

    ProfileDetails ไม่บังคับ

    Chrome 84 ขึ้นไป

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

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

getRedirectURL()

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

สร้าง URL เปลี่ยนเส้นทางที่จะใช้ใน launchWebAuthFlow

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

พารามิเตอร์

  • เส้นทาง

    สตริง ไม่บังคับ

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

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

  • สตริง

launchWebAuthFlow()

chrome.identity.launchWebAuthFlow(
  details: WebAuthFlowDetails,
)
: Promise<string | undefined>

เริ่มโฟลว์การให้สิทธิ์ที่ URL ที่ระบุ

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

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

พารามิเตอร์

  • รายละเอียด

    ตัวเลือกโฟลว์ WebAuth

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

  • Promise<string | undefined>

    Chrome 106 ขึ้นไป

removeCachedAuthToken()

chrome.identity.removeCachedAuthToken(
  details: InvalidTokenDetails,
)
: Promise<void>

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

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

พารามิเตอร์

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

  • Promise<void>

    Chrome 106 ขึ้นไป

กิจกรรม

onSignInChanged

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

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

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

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