คำอธิบาย
ใช้ chrome.identity
API เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth2
สิทธิ์
identity
ประเภท
AccountInfo
พร็อพเพอร์ตี้
- id
สตริง
ตัวระบุที่ไม่ซ้ำกันสำหรับบัญชี รหัสนี้จะไม่เปลี่ยนแปลงตลอดอายุการใช้งานของบัญชี
AccountStatus
ค่าแจกแจง
"SYNC"
ระบุว่าเปิดใช้การซิงค์สำหรับบัญชีหลัก
"ANY"
ระบุการมีอยู่ของบัญชีหลัก หากมี
GetAuthTokenResult
พร็อพเพอร์ตี้
- grantedScopes
string[] ไม่บังคับ
รายการขอบเขต OAuth2 ที่ให้สิทธิ์แก่ส่วนขยาย
- โทเค็น
สตริง ไม่บังคับ
โทเค็นเฉพาะที่เชื่อมโยงกับคำขอ
InvalidTokenDetails
พร็อพเพอร์ตี้
- โทเค็น
สตริง
โทเค็นที่เฉพาะเจาะจงซึ่งควรนำออกจากแคช
ProfileDetails
พร็อพเพอร์ตี้
- 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.identity.clearAllCachedAuthTokens(): Promise<void>
รีเซ็ตสถานะของ Identity API
- นำโทเค็นเพื่อการเข้าถึง OAuth2 ทั้งหมดออกจากแคชโทเค็น
- นำค่ากำหนดบัญชีของผู้ใช้ออก
- ยกเลิกการให้สิทธิ์ผู้ใช้จากขั้นตอนการให้สิทธิ์ทั้งหมด
การคืนสินค้า
-
Promise<void>
Chrome 106 ขึ้นไป
getAccounts()
chrome.identity.getAccounts(): Promise<AccountInfo[]>
เรียกรายการออบเจ็กต์ AccountInfo ที่อธิบายบัญชีที่อยู่ในโปรไฟล์
getAccounts
รองรับเฉพาะในช่อง Dev
การคืนสินค้า
-
Promise<AccountInfo[]>
getAuthToken()
chrome.identity.getAuthToken(
details?: TokenDetails,
): Promise<GetAuthTokenResult>
รับโทเค็นเพื่อการเข้าถึง OAuth2 โดยใช้รหัสไคลเอ็นต์และขอบเขตที่ระบุในส่วน oauth2
ของ manifest.json
Identity API จะแคชโทเค็นเพื่อการเข้าถึงในหน่วยความจำ ดังนั้นคุณจึงเรียกใช้ getAuthToken
แบบไม่โต้ตอบได้ทุกเมื่อที่ต้องใช้โทเค็น แคชโทเค็นจะจัดการการหมดอายุโดยอัตโนมัติ
การเริ่มต้นคำขอโทเค็นแบบอินเทอร์แอกทีฟโดย UI ในแอปที่อธิบายว่าการให้สิทธิ์มีไว้เพื่ออะไรเป็นสิ่งสำคัญต่อประสบการณ์การใช้งานที่ดี หากไม่ดำเนินการดังกล่าว ผู้ใช้จะได้รับคำขอการให้สิทธิ์หรือหน้าจอลงชื่อเข้าใช้ Chrome หากไม่ได้ลงชื่อเข้าใช้ โดยไม่มีบริบท โดยเฉพาะอย่างยิ่ง อย่าใช้ getAuthToken
แบบอินเทอร์แอกทีฟเมื่อเปิดตัวแอปเป็นครั้งแรก
หมายเหตุ: เมื่อเรียกใช้ด้วย Callback ฟังก์ชันนี้จะส่งคืนพร็อพเพอร์ตี้ 2 รายการเป็นอาร์กิวเมนต์แยกต่างหากที่ส่งไปยัง Callback แทนที่จะส่งคืนออบเจ็กต์
พารามิเตอร์
- รายละเอียด
TokenDetails ไม่บังคับ
ตัวเลือกโทเค็น
การคืนสินค้า
-
Promise<GetAuthTokenResult>
Chrome 105 ขึ้นไป
getProfileUserInfo()
chrome.identity.getProfileUserInfo(
details?: ProfileDetails,
): Promise<ProfileUserInfo>
ดึงข้อมูลอีเมลและรหัส Gaia ที่ปิดบังของผู้ใช้ที่ลงชื่อเข้าใช้โปรไฟล์
ต้องมีสิทธิ์ไฟล์ Manifest ของ identity.email
ไม่เช่นนั้น จะแสดงผลลัพธ์ที่ว่างเปล่า
API นี้แตกต่างจาก identity.getAccounts ใน 2 ด้าน ข้อมูลที่แสดงจะพร้อมใช้งานแบบออฟไลน์ และใช้ได้กับบัญชีหลักของโปรไฟล์เท่านั้น
พารามิเตอร์
- รายละเอียด
ProfileDetails ไม่บังคับ
Chrome 84 ขึ้นไปตัวเลือกโปรไฟล์
การคืนสินค้า
-
Promise<ProfileUserInfo>
Chrome 106 ขึ้นไป
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
- บัญชี
- signedIn
บูลีน
-