ข้อมูลอ้างอิงนี้จะอธิบายเมธอดและแอตทริบิวต์ของไคลเอ็นต์ JavaScript ที่จะใช้ เพื่อใช้ Google Sign-In ในเว็บแอปพลิเคชัน
หากพบปัญหาขณะใช้ไลบรารี โปรดรายงานไปยังที่เก็บ GitHub ของเรา
การตั้งค่าการตรวจสอบสิทธิ์
โหลดไลบรารีแพลตฟอร์ม Google API เพื่อสร้างออบเจ็กต์ gapi
ดังนี้
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
หลังจากโหลดไลบรารีแพลตฟอร์มแล้ว ให้โหลดไลบรารี auth2
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
เริ่มต้นออบเจ็กต์ GoogleAuth
คุณต้องเรียกใช้วิธีการนี้ก่อนที่จะเรียกใช้เมธอดของ gapi.auth2.GoogleAuth
เมื่อเริ่มต้นออบเจ็กต์ GoogleAuth
จะเป็นการกําหนดค่าออบเจ็กต์ด้วยรหัสไคลเอ็นต์ OAuth 2.0 และตัวเลือกอื่นๆ ที่ต้องการระบุ จากนั้น หากผู้ใช้ลงชื่อเข้าใช้แล้ว ออบเจ็กต์ GoogleAuth
จะกู้คืนสถานะการลงชื่อเข้าใช้ของผู้ใช้จากเซสชันก่อนหน้า
อาร์กิวเมนต์ | |
---|---|
params |
ออบเจ็กต์ที่มีคู่คีย์-ค่าของข้อมูลการกําหนดค่าไคลเอ็นต์ ดู gapi.auth2.ClientConfig สําหรับพร็อพเพอร์ตี้ต่างๆ ที่กําหนดค่าได้ เช่น { client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
การคืนสินค้า | |
---|---|
gapi.auth2.GoogleAuth |
ออบเจ็กต์ gapi.auth2.GoogleAuth ใช้เมธอด then() เพื่อรับ Promise ที่ได้รับการแก้ไขเมื่อออบเจ็กต์ gapi.auth2.GoogleAuth เริ่มต้นเรียบร้อยแล้ว
|
GoogleAuth.then(onInit, onError)
เรียกใช้ฟังก์ชัน onInit เมื่อเริ่มต้นออบเจ็กต์ GoogleAuth
อย่างสมบูรณ์แล้ว หากเกิดข้อผิดพลาดขณะเริ่มต้น (กรณีนี้อาจเกิดขึ้นได้ในเบราว์เซอร์เก่าที่ไม่รองรับ)
ระบบจะเรียกใช้ฟังก์ชัน onError แทน
อาร์กิวเมนต์ | |
---|---|
onInit |
ฟังก์ชันที่เรียกด้วยออบเจ็กต์ GoogleAuth เมื่อเริ่มต้นอย่างสมบูรณ์
|
onError |
ฟังก์ชันที่เรียกด้วยออบเจ็กต์ที่มีพร็อพเพอร์ตี้ error หาก GoogleAuth เริ่มต้นไม่สําเร็จ
|
การคืนสินค้า | |
---|---|
สัญญา | Promise ที่มีการตอบสนองเมื่อฟังก์ชัน onInit เสร็จสมบูรณ์ หรือถูกปฏิเสธหากเกิดข้อผิดพลาดในการเริ่มต้น โดยจะแสดงผลด้วยค่าที่แสดงผลจากฟังก์ชัน onInit (หากมี) |
รหัสข้อผิดพลาด
idpiframe_initialization_failed
-
เริ่มต้น iframe ที่จําเป็นจาก Google ไม่สําเร็จ เช่น เนื่องจากมีสภาพแวดล้อมที่ไม่รองรับ พร็อพเพอร์ตี้
details
จะให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เพิ่ม
gapi.auth2.ClientConfig
อินเทอร์เฟซที่แสดงพารามิเตอร์การกําหนดค่าต่างๆ สําหรับเมธอด gapi.auth2.init
พารามิเตอร์ | ||
---|---|---|
client_id |
string |
ต้องระบุ ระบบพบรหัสไคลเอ็นต์ของแอปและสร้างใน Google Developers Console |
cookie_policy |
string |
โดเมนที่จะสร้างคุกกี้การลงชื่อเข้าใช้ URI, single_host_origin หรือ none ค่าเริ่มต้นจะเป็น single_host_origin หากไม่ได้ระบุ |
scope |
string |
ขอบเขตที่ขอเป็นสตริงที่คั่นด้วยช่องว่าง ไม่บังคับหากไม่ได้ตั้งค่า fetch_basic_profile เป็น "เท็จ" |
fetch_basic_profile |
boolean |
ดึงข้อมูลโปรไฟล์พื้นฐานของผู้ใช้เมื่อลงชื่อเข้าใช้ เพิ่ม "โปรไฟล์" "อีเมล" และ "openid" ในขอบเขตที่ขอ จริงหากไม่ได้ระบุ |
hosted_domain |
string |
โดเมน G Suite ที่ผู้ใช้ต้องอยู่ในการลงชื่อเข้าใช้ เพราะไคลเอ็นต์มีแนวโน้มที่จะมีการแก้ไข และอย่าลืมยืนยันพร็อพเพอร์ตี้โดเมนที่โฮสต์ของผู้ใช้ที่กลับมา ใช้ GoogleUser.getHostedDomain() บนไคลเอ็นต์และการอ้างสิทธิ์ hd ในโทเค็นรหัสบนเซิร์ฟเวอร์เพื่อยืนยันโดเมนเป็นสิ่งที่คุณคาดหวัง
|
ux_mode |
string |
โหมด UX ที่ใช้สําหรับขั้นตอนการลงชื่อเข้าใช้ โดยค่าเริ่มต้นแล้ว ระบบจะเปิดกระบวนการขอความยินยอมในป๊อปอัป ค่าที่ถูกต้องคือ popup และ redirect |
redirect_uri |
string |
หากใช้ ux_mode='redirect' พารามิเตอร์นี้จะช่วยให้คุณลบล้าง redirect_uri เริ่มต้นที่จะใช้ในตอนท้ายของขั้นตอนความยินยอม redirect_uri เริ่มต้นคือ URL ปัจจุบันที่ตัดพารามิเตอร์การค้นหาและส่วนย่อยแฮชออก
|
plugin_name |
string |
ไม่บังคับ หากตั้งค่านี้ รหัสไคลเอ็นต์ใหม่ที่สร้างขึ้นก่อนวันที่ 29 กรกฎาคม 2022 จะใช้ไลบรารีของ Google Platform รุ่นเก่าได้
โดยค่าเริ่มต้น ระบบจะบล็อกรหัสไคลเอ็นต์ที่สร้างใหม่ไม่ให้ใช้คลังแพลตฟอร์มและต้องใช้ไลบรารีบริการข้อมูลประจําตัวของ Google เวอร์ชันใหม่แทน คุณอาจเลือกค่าใดก็ได้ ขอแนะนําให้ใช้ชื่อที่สื่อความหมาย เช่น ชื่อผลิตภัณฑ์หรือปลั๊กอินเพื่อให้ระบุได้ง่าย
เช่น plugin_name: 'YOUR_STRING_HERE'
|
การตรวจสอบสิทธิ์
GoogleAuth
เป็นชั้นเรียนเดี่ยวที่มอบวิธีอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ด้วยบัญชี Google, รับสถานะการลงชื่อเข้าใช้ปัจจุบันของผู้ใช้, รับข้อมูลที่เจาะจงจากโปรไฟล์ Google ของผู้ใช้, ขอขอบเขตเพิ่มเติม และออกจากระบบของบัญชีปัจจุบัน
gapi.auth2.getAuthInstance()
แสดงผลออบเจ็กต์ GoogleAuth
คุณต้องเริ่มต้นออบเจ็กต์ GoogleAuth
ด้วย gapi.auth2.init()
ก่อนที่จะเรียกใช้วิธีนี้
การคืนสินค้า | |
---|---|
gapi.auth2.GoogleAuth |
ออบเจ็กต์ gapi.auth2.GoogleAuth ใช้ออบเจ็กต์นี้เพื่อเรียกเมธอดของ gapi.auth2.GoogleAuth
|
GoogleAuth.isSignIn.get()
แสดงผลว่าผู้ใช้ปัจจุบันลงชื่อเข้าใช้อยู่หรือไม่
การคืนสินค้า | |
---|---|
บูลีน |
true หากผู้ใช้ลงชื่อเข้าใช้ หรือ false หากผู้ใช้ออกจากระบบหรือไม่ได้เริ่มต้นออบเจ็กต์ GoogleAuth
|
GoogleAuth.isSignedIn.listen(ผู้ฟัง)
ฟังการเปลี่ยนแปลงสถานะการลงชื่อเข้าใช้ของผู้ใช้ปัจจุบัน
อาร์กิวเมนต์ | |
---|---|
listener |
ฟังก์ชันที่ใช้ค่าบูลีน listen() จะส่ง true ไปยังฟังก์ชันนี้เมื่อผู้ใช้ลงชื่อเข้าใช้ และ false เมื่อผู้ใช้ออกจากระบบ
|
GoogleAuth.signIn()
ลงชื่อเข้าใช้ผู้ใช้ด้วยตัวเลือกที่ระบุไปยัง gapi.auth2.init()
การคืนสินค้า | |
---|---|
สัญญา | Promise ที่ตอบสนองด้วยอินสแตนซ์ GoogleUser เมื่อผู้ใช้ตรวจสอบสิทธิ์และระบุขอบเขตที่ขอสําเร็จ หรือถูกปฏิเสธด้วยออบเจ็กต์ที่มีพร็อพเพอร์ตี้ error หากเกิดข้อผิดพลาด (ดูรหัสข้อผิดพลาดด้านล่าง) |
รหัสข้อผิดพลาด
GoogleAuth.signIn(options)
ลงชื่อเข้าใช้ผู้ใช้โดยใช้ตัวเลือกที่ระบุ
อาร์กิวเมนต์ | |
---|---|
options |
แล้วทําอย่างใดอย่างหนึ่งต่อไปนี้
|
การคืนสินค้า | |
---|---|
สัญญา | Promise ที่ตอบสนองด้วยอินสแตนซ์ GoogleUser เมื่อผู้ใช้ตรวจสอบสิทธิ์และระบุขอบเขตที่ขอสําเร็จ หรือถูกปฏิเสธด้วยออบเจ็กต์ที่มีพร็อพเพอร์ตี้ error หากเกิดข้อผิดพลาด (ดูรหัสข้อผิดพลาดด้านล่าง) |
รหัสข้อผิดพลาด
popup_closed_by_user
- ผู้ใช้ปิดป๊อปอัปนี้ก่อนเสร็จสิ้นขั้นตอนการลงชื่อเข้าใช้
access_denied
- ผู้ใช้ปฏิเสธสิทธิ์ที่ขอบเขตที่จําเป็น
immediate_failed
-
ระบบจะเลือกผู้ใช้โดยอัตโนมัติโดยไม่แจ้งขั้นตอนการขอความยินยอมได้ เกิดข้อผิดพลาดขึ้นเมื่อใช้
signIn
กับตัวเลือกprompt: 'none'
ไม่จําเป็นต้องใช้ตัวเลือกนี้ เนื่องจากgapi.auth2.init
จะลงชื่อเข้าใช้ให้ผู้ใช้โดยอัตโนมัติหาก เคยลงชื่อเข้าใช้ในระหว่างเซสชันก่อนหน้า
gapi.auth2.SignInOptions
อินเทอร์เฟซที่แสดงพารามิเตอร์การกําหนดค่าต่างๆ สําหรับเมธอด GoogleAuth.signIn(options)
พารามิเตอร์ | ||
---|---|---|
prompt |
string |
บังคับใช้โหมดที่เจาะจงสําหรับขั้นตอนการให้คํายินยอม ไม่บังคับ ค่าที่เป็นไปได้มีดังนี้
|
scope |
string |
ขอบเขตที่ขอเป็นสตริงที่คั่นด้วยช่องว่างที่ด้านบนของขอบเขตที่กําหนดไว้ในพารามิเตอร์ gapi.auth2.init ไม่บังคับหากไม่ได้ตั้งค่า fetch_basic_profile เป็น "เท็จ"
|
ux_mode |
string |
โหมด UX ที่ใช้สําหรับขั้นตอนการลงชื่อเข้าใช้ โดยค่าเริ่มต้นแล้ว ระบบจะเปิดกระบวนการขอความยินยอมในป๊อปอัป ค่าที่ถูกต้องคือ popup และ redirect |
redirect_uri |
string |
หากใช้ ux_mode='redirect' พารามิเตอร์นี้จะช่วยให้คุณลบล้าง redirect_uri เริ่มต้นที่จะใช้ในตอนท้ายของขั้นตอนความยินยอม redirect_uri เริ่มต้นคือ URL ปัจจุบันที่ตัดพารามิเตอร์การค้นหาและส่วนย่อยแฮชออก
|
GoogleAuth.signOut()
ออกจากระบบบัญชีปัจจุบันจากแอปพลิเคชัน
การคืนสินค้า | |
---|---|
สัญญา | Promise ที่จะมีผลเมื่อผู้ใช้ออกจากระบบ |
GoogleAuth.disconnect()
เพิกถอนขอบเขตทั้งหมดที่ผู้ใช้ให้ไว้
GoogleAuth.grantแบบออฟไลน์เข้าถึง(options)
ขอสิทธิ์จากผู้ใช้เพื่อเข้าถึงขอบเขตที่ระบุแบบออฟไลน์
อาร์กิวเมนต์ | |
---|---|
options |
ออบเจ็กต์ gapi.auth2.OfflineAccessOptions ที่มีคู่คีย์-ค่าพารามิเตอร์ ดังตัวอย่างต่อไปนี้ { scope: 'profile email' } |
การคืนสินค้า | |
---|---|
สัญญา | Promise ที่จะดําเนินการเมื่อผู้ใช้ให้สิทธิ์ขอบเขตที่ขอ ส่งออบเจ็กต์ที่มีรหัสการให้สิทธิ์ไปยังเครื่องจัดการการดําเนินการของ Promise
ดังตัวอย่างต่อไปนี้ auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
รหัสข้อผิดพลาด
popup_closed_by_user
- ผู้ใช้ปิดป๊อปอัปก่อนที่จะดําเนินการตามความยินยอมให้เสร็จสมบูรณ์
access_denied
- ผู้ใช้ปฏิเสธสิทธิ์ที่ขอบเขตที่จําเป็น
immediate_failed
-
ระบบจะเลือกผู้ใช้โดยอัตโนมัติโดยไม่แจ้งขั้นตอนการขอความยินยอมได้ เกิดข้อผิดพลาดขึ้นเมื่อใช้
signIn
กับตัวเลือกprompt: 'none'
ไม่จําเป็นต้องใช้ตัวเลือกนี้ เนื่องจากgapi.auth2.init
จะลงชื่อเข้าใช้ให้ผู้ใช้โดยอัตโนมัติหาก เคยลงชื่อเข้าใช้ในระหว่างเซสชันก่อนหน้า
gapi.auth2.OfflineAccessOptions
อินเทอร์เฟซที่แสดงพารามิเตอร์การกําหนดค่าต่างๆ สําหรับเมธอด GoogleAuth.grantOfflineAccess(options)
พารามิเตอร์ | ||
---|---|---|
prompt |
string |
บังคับใช้โหมดที่เจาะจงสําหรับขั้นตอนการให้คํายินยอม ไม่บังคับ ค่าที่เป็นไปได้มีดังนี้
|
scope |
string |
ขอบเขตที่ขอเป็นสตริงที่คั่นด้วยช่องว่างที่ด้านบนของขอบเขตที่กําหนดไว้ในพารามิเตอร์ gapi.auth2.init ไม่บังคับหากไม่ได้ตั้งค่า fetch_basic_profile เป็น "เท็จ"
|
GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)
แนบขั้นตอนการลงชื่อเข้าใช้กับเครื่องจัดการการคลิกของคอนเทนเนอร์ที่ระบุ
อาร์กิวเมนต์ | |
---|---|
container | รหัสของการอ้างอิงหรือการอ้างอิงไปยังองค์ประกอบ div ที่จะแนบเครื่องจัดการคลิก |
options | ออบเจ็กต์ที่มีคู่คีย์-พารามิเตอร์ โปรดดู GoogleAuth.signIn() |
onsuccess | ฟังก์ชันที่จะเรียกใช้หลังจากลงชื่อเข้าใช้เสร็จสมบูรณ์ |
onfailure | ฟังก์ชันที่จะเรียกใช้หากการลงชื่อเข้าใช้ไม่สําเร็จ |
ผู้ใช้
ออบเจ็กต์ GoogleUser
แสดงถึงบัญชีผู้ใช้ 1 บัญชี
โดยทั่วไปออบเจ็กต์ GoogleUser
จะได้รับโดยการเรียก
GoogleAuth.currentUser.get()
GoogleAuth.currentUser.get()
แสดงผลออบเจ็กต์ GoogleUser
ที่แสดงถึงผู้ใช้ปัจจุบัน โปรดทราบว่าในอินสแตนซ์ GoogleAuth
ที่เพิ่งเปิดตัวนั้น ยังไม่มีการตั้งค่าผู้ใช้ปัจจุบัน ใช้เมธอด currentUser.listen()
หรือ GoogleAuth.then()
เพื่อรับอินสแตนซ์ GoogleAuth
เริ่มต้น
การคืนสินค้า | |
---|---|
GoogleUser |
ผู้ใช้ปัจจุบัน |
GoogleAuth.currentUser.listen(listener)
ฟังการเปลี่ยนแปลงใน currentUser
อาร์กิวเมนต์ | |
---|---|
listener |
ฟังก์ชันที่ใช้พารามิเตอร์ GoogleUser
listen จะส่งอินสแตนซ์ GoogleUser ไปยังฟังก์ชันนี้ทุกการเปลี่ยนแปลงที่แก้ไข currentUser
|
GoogleUser.getId()
รับสตริงรหัสที่ไม่ซ้ํากันของผู้ใช้
การคืนสินค้า | |
---|---|
สตริง | รหัสที่ไม่ซ้ํากันของผู้ใช้ |
GoogleUser.isSignIn()
แสดงค่า "จริง" หากผู้ใช้ลงชื่อเข้าใช้
การคืนสินค้า | |
---|---|
บูลีน | จริงหากผู้ใช้ลงชื่อเข้าใช้ |
GoogleUser.getHostedDomain()
รับโดเมน G Suite ของผู้ใช้หากผู้ใช้ลงชื่อเข้าใช้ด้วยบัญชี G Suite
การคืนสินค้า | |
---|---|
สตริง | โดเมน G Suite ของผู้ใช้ |
GoogleUser.getGrantedScopes()
ดูขอบเขตที่ผู้ใช้กําหนดเป็นสตริงที่คั่นด้วยช่องว่าง
การคืนสินค้า | |
---|---|
สตริง | ขอบเขตที่กําหนดโดยผู้ใช้ |
GoogleUser.getBasicProfile()
รับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้
การคืนสินค้า | |
---|---|
gapi.auth2.BasicProfile |
คุณเรียกดูพร็อพเพอร์ตี้ของ gapi.auth2.BasicProfile ได้ด้วยวิธีต่อไปนี้
|
GoogleUser.getAuthResponse(รวมการให้สิทธิ์ข้อมูล)
รับออบเจ็กต์การตอบกลับจากเซสชันการตรวจสอบสิทธิ์ของผู้ใช้
อาร์กิวเมนต์ | |
---|---|
includeAuthorizationData | ไม่บังคับ: บูลีนที่ระบุว่าจะส่งคืนโทเค็นเพื่อการเข้าถึงและขอบเขตเสมอ โดยค่าเริ่มต้น ระบบจะไม่ส่งโทเค็นเพื่อการเข้าถึงและขอบเขตที่ขอเมื่อ fetch_basic_profile เป็นจริง (ค่าเริ่มต้น) และจะไม่มีการขอขอบเขตเพิ่มเติม |
การคืนสินค้า | |
---|---|
gapi.auth2.AuthResponse |
ออบเจ็กต์ gapi.auth2.AuthResponse |
GoogleUser.reloadAuthResponse()
บังคับรีเฟรชของโทเค็นเพื่อการเข้าถึง แล้วส่ง Promise สําหรับ AuthResponse ใหม่
การคืนสินค้า | |
---|---|
Promise |
Promise ที่ดําเนินการตาม gapi.auth2.AuthResponse โหลดซ้ําเมื่อโหลดโทเค็น OAuth ซ้ําเสร็จแล้ว
|
gapi.auth2.AuthResponse
การตอบกลับจะแสดงเมื่อเรียกใช้เมธอด GoogleUser.getAuthResponse(includeAuthorizationData)
หรือ GoogleUser.reloadAuthResponse()
พร็อพเพอร์ตี้ | ||
---|---|---|
access_token |
string |
ให้สิทธิ์เข้าถึงโทเค็นแล้ว |
id_token |
string |
อนุญาตโทเค็นรหัสแล้ว |
scope |
string |
ขอบเขตที่ให้ไว้ในโทเค็นเพื่อการเข้าถึง |
expires_in |
number |
จํานวนวินาทีจนกว่าโทเค็นเพื่อการเข้าถึงจะหมดอายุ |
first_issued_at |
number |
การประทับเวลาที่ผู้ใช้ให้สิทธิ์ขอบเขตที่ขอเป็นครั้งแรก |
expires_at |
number |
การประทับเวลาที่โทเค็นเพื่อการเข้าถึงจะหมดอายุ |
GoogleUser.hasGrantedScopes(scopes)
แสดงค่า "จริง" หากผู้ใช้ให้สิทธิ์ขอบเขตที่ระบุ
อาร์กิวเมนต์ | |
---|---|
scopes | สตริงขอบเขตที่คั่นด้วยช่องว่าง |
การคืนสินค้า | |
---|---|
บูลีน | เป็นจริงหากกําหนดขอบเขต |
GoogleUser.grant(options)
ขอขอบเขตเพิ่มเติมแก่ผู้ใช้
ดูรายการพารามิเตอร์และรหัสข้อผิดพลาดได้ที่ GoogleAuth.signIn()
GoogleUser.grantOfflineAccess(options)
ขอสิทธิ์จากผู้ใช้เพื่อเข้าถึงขอบเขตที่ระบุแบบออฟไลน์
อาร์กิวเมนต์ | |
---|---|
options |
ออบเจ็กต์ gapi.auth2.OfflineAccessOptions ที่มีคู่คีย์-ค่าพารามิเตอร์ ดังตัวอย่างต่อไปนี้ { scope: 'profile email' } |
GoogleUser.disconnect()
เพิกถอนขอบเขตทั้งหมดที่ผู้ใช้ให้กับแอปพลิเคชัน
องค์ประกอบ UI
gapi.signin2.render(id, options)
แสดงปุ่มลงชื่อเข้าใช้ในองค์ประกอบด้วยรหัสที่ระบุ โดยใช้การตั้งค่าที่ออบเจ็กต์ options ระบุ
อาร์กิวเมนต์ | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | รหัสขององค์ประกอบที่จะแสดงปุ่มลงชื่อเข้าใช้ | ||||||||||||||||
options |
ออบเจ็กต์ที่มีการตั้งค่าที่จะใช้แสดงผลปุ่ม เช่น
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }คุณระบุตัวเลือกต่อไปนี้ได้
|
ระดับสูง
gapi.auth2.authorized(params, callback)
ดําเนินการให้สิทธิ์ OAuth 2.0 แบบครั้งเดียว ซึ่งจะเป็นการเปิดป๊อปอัปสําหรับขั้นตอนการลงชื่อเข้าใช้ของ Google หรือพยายามโหลดการตอบกลับที่ขอแบบเงียบโดยไม่ต้องโต้ตอบกับผู้ใช้ ทั้งนี้ขึ้นอยู่กับพารามิเตอร์ที่ใช้
กรณีการใช้งานต่อไปนี้ที่วิธีการนี้เป็นประโยชน์
- แอปพลิเคชันจะขอปลายทาง Google API เพียงครั้งเดียวเท่านั้น เช่น เพื่อโหลดวิดีโอ YouTube ที่ชื่นชอบของผู้ใช้เมื่อลงชื่อเข้าใช้เป็นครั้งแรก
- แอปพลิเคชันของคุณมีโครงสร้างพื้นฐานการจัดการเซสชันของตัวเอง และต้องใช้โทเค็นรหัสเพียงครั้งเดียวเพื่อระบุผู้ใช้แบ็กเอนด์
- มีการใช้รหัสไคลเอ็นต์หลายรายการในหน้าเดียวกัน
อาร์กิวเมนต์ | |
---|---|
params |
ออบเจ็กต์ที่มีคู่คีย์-ค่าของข้อมูลการกําหนดค่า ดู gapi.auth2.AuthorizeConfig สําหรับพร็อพเพอร์ตี้ต่างๆ ที่กําหนดค่าได้ เช่น { client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
ฟังก์ชันการเรียกใช้ด้วยออบเจ็กต์ gapi.auth2.AuthorizeResponse หลังจากคําขอเสร็จสมบูรณ์ (ไม่ว่าจะสําเร็จหรือไม่สําเร็จ)
|
ตัวอย่าง
gapi.auth2.authorize({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
scope: 'email profile openid',
response_type: 'id_token permission'
}, function(response) {
if (response.error) {
// An error happened!
return;
}
// The user authorized the application for the scopes requested.
var accessToken = response.access_token;
var idToken = response.id_token;
// You can also now use gapi.client to perform authenticated requests.
});
รหัสข้อผิดพลาด
idpiframe_initialization_failed
-
เริ่มต้น iframe ที่จําเป็นจาก Google ไม่สําเร็จ เช่น เนื่องจากมีสภาพแวดล้อมที่ไม่รองรับ พร็อพเพอร์ตี้
details
จะให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เพิ่ม popup_closed_by_user
- ผู้ใช้ปิดป๊อปอัปนี้ก่อนเสร็จสิ้นขั้นตอนการลงชื่อเข้าใช้
access_denied
- ผู้ใช้ปฏิเสธสิทธิ์ที่ขอบเขตที่จําเป็น
immediate_failed
-
ระบบจะเลือกผู้ใช้โดยอัตโนมัติโดยไม่แจ้งขั้นตอนการขอความยินยอมได้ เกิดข้อผิดพลาดขึ้นเมื่อใช้
signIn
กับตัวเลือกprompt: 'none'
gapi.auth2.AuthorizeConfig
อินเทอร์เฟซที่แสดงพารามิเตอร์การกําหนดค่าต่างๆ สําหรับเมธอด gapi.auth2.authorize
พร็อพเพอร์ตี้ | ||
---|---|---|
client_id |
string |
Required ระบบพบรหัสไคลเอ็นต์ของแอปและสร้างใน Google Developers Console |
scope |
string |
Required ขอบเขตที่ขอเป็นสตริงที่คั่นด้วยช่องว่าง |
response_type |
string |
รายการประเภทการตอบกลับที่คั่นด้วยช่องว่าง ค่าเริ่มต้นคือ 'permission' โดยค่าที่เป็นไปได้มีดังนี้
|
prompt |
string |
บังคับใช้โหมดที่เจาะจงสําหรับขั้นตอนการให้คํายินยอม โดยค่าที่เป็นไปได้มีดังนี้
|
cookie_policy |
string |
โดเมนที่จะสร้างคุกกี้การลงชื่อเข้าใช้ URI, single_host_origin หรือ none ค่าเริ่มต้นจะเป็น single_host_origin หากไม่ได้ระบุ
|
hosted_domain |
string |
โดเมน G Suite ที่ผู้ใช้ต้องอยู่ในการลงชื่อเข้าใช้ เพราะไคลเอ็นต์มีแนวโน้มที่จะมีการแก้ไข ดังนั้นอย่าลืมยืนยันพร็อพเพอร์ตี้โดเมนที่โฮสต์ของผู้ใช้ที่กลับมา |
login_hint |
string |
อีเมลหรือรหัสผู้ใช้ของผู้ใช้เพื่อเลือกไว้ล่วงหน้าในขั้นตอนการลงชื่อเข้าใช้ ผู้ใช้จะแก้ไขได้ เว้นแต่ว่าจะใช้ prompt: "none"
|
include_granted_scopes |
boolean |
ควรจะขอโทเค็นเพื่อการเข้าถึงที่มีขอบเขตทั้งหมดที่ผู้ใช้ให้กับแอปก่อนหน้านี้หรือขอเฉพาะขอบเขตที่ขอในการเรียกปัจจุบันเท่านั้น ค่าเริ่มต้นคือ true
|
plugin_name |
string |
ไม่บังคับ หากตั้งค่า รหัสไคลเอ็นต์ที่สร้างก่อนวันที่ 29 กรกฎาคม 2022 จะใช้ไลบรารีของ Google Platform ได้ โดยค่าเริ่มต้น ระบบจะบล็อกรหัสไคลเอ็นต์ที่เพิ่งสร้างใหม่ไม่ให้ใช้ไลบรารีแพลตฟอร์มและต้องใช้ไลบรารีบริการข้อมูลประจําตัวของ Google เวอร์ชันใหม่กว่าแทน คุณอาจเลือกค่าใดก็ได้ ขอแนะนําให้ใช้ชื่อที่สื่อความหมาย เช่น ชื่อผลิตภัณฑ์หรือปลั๊กอินเพื่อให้ระบุได้ง่าย
เช่น plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
การตอบกลับกลับไปยังการเรียกกลับของเมธอด gapi.auth2.authorize
พร็อพเพอร์ตี้ | ||
---|---|---|
access_token |
string |
ให้สิทธิ์เข้าถึงโทเค็นแล้ว แสดงเมื่อระบุ permission หรือ token ใน response_type เท่านั้น
|
id_token |
string |
อนุญาตโทเค็นรหัสแล้ว แสดงเมื่อระบุ id_token ใน response_type เท่านั้น
|
code |
string |
รหัสการให้สิทธิ์ที่ได้รับ แสดงเมื่อระบุ code ใน response_type เท่านั้น
|
scope |
string |
ขอบเขตที่ให้ไว้ในโทเค็นเพื่อการเข้าถึง แสดงเมื่อระบุ permission หรือ token ใน response_type เท่านั้น
|
expires_in |
number |
จํานวนวินาทีจนกว่าโทเค็นเพื่อการเข้าถึงจะหมดอายุ แสดงเมื่อระบุ permission หรือ token ใน response_type เท่านั้น
|
first_issued_at |
number |
การประทับเวลาที่ผู้ใช้ให้สิทธิ์ขอบเขตที่ขอเป็นครั้งแรก แสดงเมื่อระบุ permission หรือ token ใน response_type เท่านั้น
|
expires_at |
number |
การประทับเวลาที่โทเค็นเพื่อการเข้าถึงจะหมดอายุ แสดงเมื่อระบุ permission หรือ token ใน response_type เท่านั้น
|
error |
string |
เมื่อส่งคําขอไม่สําเร็จ ค่านี้จะมีรหัสข้อผิดพลาด |
error_subtype |
string |
เมื่อคําขอล้มเหลว อาจมีข้อมูลเพิ่มเติมเกี่ยวกับรหัสข้อผิดพลาดที่แสดงผลด้วย |