การอ้างอิงไคลเอ็นต์ JavaScript สําหรับ Google Sign-In

ข้อมูลอ้างอิงนี้อธิบายถึงเมธอดและแอตทริบิวต์ของไคลเอ็นต์ JavaScript ที่คุณจะใช้ เพื่อลงชื่อเข้าใช้ Google ในเว็บแอปพลิเคชัน

หากพบปัญหาใดๆ ในการใช้ไลบรารี โปรดรายงานไปยังที่เก็บของ GitHub

การตั้งค่าการตรวจสอบสิทธิ์

โหลดไลบรารีแพลตฟอร์มของ Google APIs เพื่อสร้างออบเจ็กต์ 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&#39

เมื่อเริ่มต้นออบเจ็กต์ 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 ดึงข้อมูลผู้ใช้' ข้อมูลโปรไฟล์พื้นฐานเมื่อลงชื่อเข้าใช้ เพิ่ม 'profile', 'email' และ '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 Identity ที่ใหม่กว่าแทน คุณอาจเลือกค่าใดก็ได้ ขอแนะนําให้ระบุชื่อที่สื่อความหมาย เช่น ชื่อผลิตภัณฑ์หรือปลั๊กอิน เพื่อให้ระบุได้ง่าย เช่น 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.isSignedIn.get()

แสดงผลไม่ว่าผู้ใช้ปัจจุบันลงชื่อเข้าใช้อยู่หรือไม่

การคืนสินค้า
บูลีน true หากผู้ใช้ลงชื่อเข้าใช้หรือ false หากผู้ใช้ออกจากระบบหรือออบเจ็กต์ GoogleAuth ไม่ได้เริ่มต้น

GoogleAuth.isSignedIn.listen(ผู้ฟัง)

ฟังการเปลี่ยนแปลงสถานะการลงชื่อเข้าใช้ของผู้ใช้ปัจจุบัน

อาร์กิวเมนต์
listener ฟังก์ชันที่ใช้ค่าบูลีน listen() จะส่ง true ไปยังฟังก์ชันนี้เมื่อผู้ใช้ลงชื่อเข้าใช้ และ false เมื่อผู้ใช้ออกจากระบบ

GoogleAuth.signIn()

ลงชื่อเข้าใช้ด้วยผู้ใช้ที่ระบุให้ gapi.auth2.init()

การคืนสินค้า
สัญญา Promise ที่ดําเนินการกับอินสแตนซ์ GoogleUser เมื่อผู้ใช้ตรวจสอบสิทธิ์และให้สิทธิ์ขอบเขตที่ขอแล้ว หรือปฏิเสธด้วยออบเจ็กต์ที่มีพร็อพเพอร์ตี้ error หากเกิดข้อผิดพลาด (ดูรหัสข้อผิดพลาดด้านล่าง)

รหัสข้อผิดพลาด

ดูGoogleAuth.signIn(options)

GoogleAuth.signIn(options)

ลงชื่อเข้าใช้โดยใช้ตัวเลือกที่ระบุ

อาร์กิวเมนต์
options ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
  • ออบเจ็กต์ gapi.auth2.SignInOptions ที่มีคู่คีย์-ค่าของพารามิเตอร์การลงชื่อเข้าใช้ ดังตัวอย่างต่อไปนี้
    {
      scope: 'profile email'
    }
  • อินสแตนซ์ของ gapi.auth2.SigninOptionsBuilder ดังตัวอย่างต่อไปนี้
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
การคืนสินค้า
สัญญา 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 บังคับใช้โหมดเดียวสําหรับโฟลว์ความยินยอม ไม่บังคับ
ค่าที่เป็นไปได้มีดังนี้
  • consent
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งความยินยอมให้ผู้ใช้ทราบก่อนส่งคืนข้อมูลไปยังแอปพลิเคชัน
  • select_account
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งผู้ใช้ให้เลือกบัญชี Google วิธีนี้ช่วยให้ผู้ใช้ที่มีหลายบัญชีเลือกในหลายบัญชีที่อาจมีเซสชันปัจจุบันได้
  • none (ไม่แนะนํา)
    เซิร์ฟเวอร์การให้สิทธิ์จะไม่แสดงหน้าจอการตรวจสอบสิทธิ์หรือคํายินยอมของผู้ใช้ แต่จะแสดงผลข้อผิดพลาดหากผู้ใช้ไม่ได้ตรวจสอบสิทธิ์และยังไม่ได้ให้ความยินยอมในขอบเขตที่ขอก่อนหน้านี้
    เนื่องจาก gapi.auth2.init จะลงชื่อเข้าใช้แอปพลิเคชันให้ผู้ใช้โดยอัตโนมัติหากลงชื่อเข้าใช้ไว้ก่อนหน้านี้ ปกติแล้วการเรียกใช้ signIn({prompt: 'none'}) จะไม่สําเร็จ
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.grantOfflineAccess(options)

ขออนุญาตจากผู้ใช้เพื่อเข้าถึงขอบเขตที่ระบุแบบออฟไลน์

อาร์กิวเมนต์
options ออบเจ็กต์ gapi.auth2.OfflineAccessOptions ที่มีคู่คีย์-ค่าของพารามิเตอร์ ดังตัวอย่างต่อไปนี้
{
  scope: 'profile email'
}
การคืนสินค้า
สัญญา Promise ที่ดําเนินการเมื่อผู้ใช้ให้สิทธิ์ขอบเขตที่ขอ โดยส่งออบเจ็กต์ที่มีรหัสการให้สิทธิ์ไปยังเครื่องจัดการการดําเนินการของ Promise&#39 ดังตัวอย่างต่อไปนี้
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 บังคับใช้โหมดเดียวสําหรับโฟลว์ความยินยอม ไม่บังคับ
ค่าที่เป็นไปได้มีดังนี้
  • consent
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งความยินยอมให้ผู้ใช้ทราบก่อนส่งคืนข้อมูลไปยังแอปพลิเคชัน
  • select_account
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งผู้ใช้ให้เลือกบัญชี Google วิธีนี้ช่วยให้ผู้ใช้ที่มีหลายบัญชีเลือกในหลายบัญชีที่อาจมีเซสชันปัจจุบันได้
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)

ฟังการเปลี่ยนแปลงใน Currents ผู้ใช้

อาร์กิวเมนต์
listener ฟังก์ชันที่ใช้พารามิเตอร์ GoogleUser listen ส่งผ่านฟังก์ชันนี้ด้วยอินสแตนซ์ GoogleUser ในการเปลี่ยนแปลงทั้งหมดที่แก้ไข currentUser

GoogleUser.getId()

รับสตริงรหัสที่ไม่ซ้ํากันของผู้ใช้

การคืนสินค้า
สตริง รหัสที่ไม่ซ้ํากันของผู้ใช้

GoogleUser.isSignedIn()

แสดงค่า "จริง" หากผู้ใช้ลงชื่อเข้าใช้

การคืนสินค้า
บูลีน เป็นจริงหากผู้ใช้ลงชื่อเข้าใช้

GoogleUser.getHostedDomain()

รับโดเมน G Suite ของผู้ใช้หากผู้ใช้ลงชื่อเข้าใช้ด้วยบัญชี G Suite

การคืนสินค้า
สตริง โดเมน G Suite ของผู้ใช้

GoogleUser.getGrantedScopes()

รับขอบเขตที่ผู้ใช้กําหนดเป็นสตริงที่คั่นด้วยช่องว่าง

การคืนสินค้า
สตริง ขอบเขตที่ผู้ใช้กําหนด

GoogleUser.getBasicProfile()

ดูข้อมูลโปรไฟล์พื้นฐานของผู้ใช้

การคืนสินค้า
gapi.auth2.BasicProfile คุณเรียกข้อมูลพร็อพเพอร์ตี้ของ gapi.auth2.BasicProfile ได้ด้วยวิธีต่อไปนี้
  • BasicProfile.getId()
  • BasicProfile.getName()
  • BasicProfile.getGrantnName()
  • BasicProfile.getFamilyName()
  • BasicProfile.getImageUrl()
  • BasicProfile.getEmail()

GoogleUser.getAuthResponse(includeAuthorizationData)

รับออบเจ็กต์การตอบกลับจากเซสชันการตรวจสอบสิทธิ์ของผู้ใช้

อาร์กิวเมนต์
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
}
คุณระบุตัวเลือกต่อไปนี้ได้
พารามิเตอร์
ขอบเขต ขอบเขตที่จะขอเมื่อผู้ใช้ลงชื่อเข้าใช้ (ค่าเริ่มต้น: profile)
ความกว้าง ความกว้างของปุ่มเป็นพิกเซล (ค่าเริ่มต้น: 120)
ความสูง ความสูงของปุ่มเป็นพิกเซล (ค่าเริ่มต้น: 36)
ชื่อเต็ม แสดงป้ายกํากับแบบยาว เช่น "ลงชื่อเข้าใช้ด้วย Google" แทน "ลงชื่อเข้าใช้" (ค่าเริ่มต้น: false) เมื่อใช้ชื่อยาว คุณควรเพิ่มความกว้างของปุ่มจากค่าเริ่มต้น
ธีม [theme] ธีมสีของปุ่มจะเป็น light หรือ dark (ค่าเริ่มต้น: light)
สําเร็จ ฟังก์ชันเรียกกลับเพื่อเรียกเมื่อผู้ใช้ลงชื่อเข้าใช้สําเร็จ ฟังก์ชันนี้ต้องมีอาร์กิวเมนต์เดียว นั่นคืออินสแตนซ์ของ gapi.auth2.GoogleUser (ค่าเริ่มต้น: ไม่มี)
ความล้มเหลว ฟังก์ชันเรียกกลับเพื่อเรียกเมื่อลงชื่อเข้าใช้ไม่สําเร็จ ฟังก์ชันนี้ไม่มีอาร์กิวเมนต์ (ค่าเริ่มต้น: ไม่มี)

ระดับสูง

gapi.auth2.authorized(params, callback)

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

Use Case ที่มีประโยชน์กับวิธีนี้

  • แอปพลิเคชันของคุณจะขอปลายทาง 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' โดยค่าที่เป็นไปได้มีดังนี้
  • id_token เพื่อเรียกโทเค็นรหัส
  • permission (หรือ token) เพื่อเรียกโทเค็นเพื่อการเข้าถึง
  • code เพื่อเรียกข้อมูลรหัสการให้สิทธิ์
prompt string บังคับใช้โหมดเดียวสําหรับโฟลว์ความยินยอม โดยค่าที่เป็นไปได้มีดังนี้
  • consent
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งความยินยอมให้ผู้ใช้ทราบก่อนส่งคืนข้อมูลไปยังแอปพลิเคชัน
  • select_account
    เซิร์ฟเวอร์การให้สิทธิ์จะแจ้งผู้ใช้ให้เลือกบัญชี Google วิธีนี้ช่วยให้ผู้ใช้ที่มีหลายบัญชีเลือกในหลายบัญชีที่อาจมีเซสชันปัจจุบันได้
  • none
    เซิร์ฟเวอร์การให้สิทธิ์จะไม่แสดงหน้าจอการตรวจสอบสิทธิ์หรือคํายินยอมของผู้ใช้ แต่จะแสดงผลข้อผิดพลาดหากผู้ใช้ไม่ได้ตรวจสอบสิทธิ์และยังไม่ได้ให้ความยินยอมในขอบเขตที่ขอก่อนหน้านี้
    หากขอ code เป็นประเภทการตอบกลับ โค้ดที่ส่งคืนจะแลกเปลี่ยนกับ access_token ได้เท่านั้น ไม่ใช่ refresh_token
cookie_policy string โดเมนที่จะสร้างคุกกี้การลงชื่อเข้าใช้ URI, single_host_origin หรือ none ก็ได้ ค่าเริ่มต้นจะเป็น single_host_origin หากไม่ได้ระบุไว้
hosted_domain string โดเมน G Suite ที่ต้องให้ผู้ใช้ลงชื่อเข้าใช้ เพราะไคลเอ็นต์มีแนวโน้มที่จะแก้ไข ดังนั้นอย่าลืมยืนยันพร็อพเพอร์ตี้โดเมนที่โฮสต์ของผู้ใช้ที่กลับมา
login_hint string อีเมลหรือ User-ID ของผู้ใช้ที่จะเลือกไว้ล่วงหน้าในขั้นตอนการลงชื่อเข้าใช้ เนื่องจากผู้ใช้มีแนวโน้มที่จะแก้ไข เว้นแต่ว่าจะใช้ 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 เมื่อคําขอล้มเหลว คําขออาจมีข้อมูลเพิ่มเติมไปยังรหัสข้อผิดพลาดด้วย