การอ้างอิงไคลเอ็นต์ JavaScript ใน Google Sign-In

การอ้างอิงนี้อธิบายวิธีไคลเอ็นต์และแอตทริบิวต์ JavaScript ที่คุณจะ ใช้ Google Sign-In ในเว็บแอปพลิเคชัน

หากคุณประสบปัญหาในการใช้ไลบรารี โปรดรายงาน ที่เก็บของ 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

เมื่อคุณเริ่มต้นออบเจ็กต์ GoogleAuth คุณจะกำหนดค่าออบเจ็กต์ด้วยรหัสไคลเอ็นต์ OAuth 2.0 และตัวเลือกอื่นๆ ที่ต้องการระบุ จากนั้น หากผู้ใช้ลงชื่อเข้าใช้แล้ว ออบเจ็กต์ GoogleAuth จะคืนค่าสถานะการลงชื่อเข้าใช้ของผู้ใช้จากเซสชันก่อนหน้า

อาร์กิวเมนต์
params ออบเจ็กต์ที่มีคู่คีย์-ค่าของข้อมูลการกำหนดค่าไคลเอ็นต์ โปรดดู gapi.auth2.ClientConfig สำหรับ ที่สามารถกำหนดค่าได้ ดังตัวอย่างต่อไปนี้
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com'
}
การคืนสินค้า
gapi.auth2.GoogleAuth ออบเจ็กต์ gapi.auth2.GoogleAuth ใช้เมนู then() เพื่อรับคำสัญญา ที่ได้รับการแก้ไขเมื่อออบเจ็กต์ gapi.auth2.GoogleAuth เสร็จสิ้น กำลังเริ่มต้น

GoogleAuth.then(onInit, onError)

เรียกใช้ฟังก์ชัน onInit เมื่อออบเจ็กต์ GoogleAuth สมบูรณ์แล้ว ได้เริ่มต้นแล้ว หากข้อผิดพลาดเกิดขึ้นขณะเริ่มต้น (ซึ่งอาจเกิดขึ้นได้ในเบราว์เซอร์เวอร์ชันเก่าที่ไม่รองรับ) จะมีการเรียกฟังก์ชัน onError แทน

อาร์กิวเมนต์
onInit ฟังก์ชันที่เรียกใช้ด้วยออบเจ็กต์ GoogleAuth เมื่อเสร็จสมบูรณ์ ได้เริ่มต้นแล้ว
onError ฟังก์ชันที่เรียกใช้ด้วยออบเจ็กต์ที่มีพร็อพเพอร์ตี้ error หากเริ่มต้น GoogleAuth ไม่สำเร็จ
การคืนสินค้า
Promise Promise ที่ได้รับการดำเนินการเมื่อ onInit เสร็จสมบูรณ์ หรือถูกปฏิเสธหากเกิดข้อผิดพลาดในการเริ่มต้น ซึ่งแก้ไขด้วย แสดงผลค่าจากฟังก์ชัน onInit หากมี

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

idpiframe_initialization_failed
ไม่สามารถเริ่มต้น iframe ที่ต้องการจาก Google เช่น เนื่องจาก ของคุณ พร็อพเพอร์ตี้ details จะให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เกิดขึ้น

gapi.auth2.ClientConfig

อินเทอร์เฟซที่แสดงพารามิเตอร์การกำหนดค่าต่างๆ สำหรับ gapi.auth2.init

พารามิเตอร์
client_id string ต้องระบุ รหัสไคลเอ็นต์ของแอปที่พบและสร้างในคอนโซล Google API
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 ในโทเค็นรหัสบน เซิร์ฟเวอร์เพื่อยืนยันโดเมนนั้นเป็นสิ่งที่คุณคาดหวัง
use_fedcm boolean ไม่บังคับ ค่าเริ่มต้นคือ True เปิดหรือปิดใช้ FedCM API ของเบราว์เซอร์ในระหว่างการลงชื่อเข้าใช้
ux_mode string โหมด UX ที่ใช้สำหรับขั้นตอนการลงชื่อเข้าใช้ ระบบจะเปิดขั้นตอนการขอความยินยอมโดยค่าเริ่มต้น ในป๊อปอัป ค่าที่ถูกต้องคือ popup และ redirect
redirect_uri string หากใช้ ux_mode='redirect' พารามิเตอร์นี้จะช่วยให้คุณลบล้าง ระบบจะใช้ redirect_uri เริ่มต้นเมื่อสิ้นสุดขั้นตอนการขอความยินยอม ค่าเริ่มต้น redirect_uri คือ URL ปัจจุบันที่ถูกตัดออกจากพารามิเตอร์การค้นหาและแฮช ส่วนย่อย
enable_granular_consent boolean ไม่บังคับ เลือกว่าจะเปิดใช้หรือไม่ รายละเอียด สิทธิ์ หากตั้งค่าเป็น false ระบบ Google จะแสดงรายละเอียดที่ละเอียดยิ่งขึ้น ระบบจะปิดใช้สิทธิ์ของบัญชีสำหรับรหัสไคลเอ็นต์ OAuth ที่สร้างก่อนวันที่ 2019 ไม่ส่งผลกระทบต่อรหัสไคลเอ็นต์ OAuth ที่สร้างขึ้นระหว่างหรือหลังปี 2019 ตั้งแต่ สิทธิ์ที่ละเอียดยิ่งขึ้นจะเปิดใช้อยู่เสมอ
plugin_name string ไม่บังคับ หากมีการตั้งค่านี้ ระบบจะสร้างรหัสไคลเอ็นต์ใหม่ก่อนเดือนกรกฎาคม ในวันที่ 29 ปี 2022 จะใช้ไลบรารี Google Platform เวอร์ชันเก่าได้ โดยค่าเริ่มต้น รหัสไคลเอ็นต์ที่สร้างขึ้นใหม่จะถูกบล็อกจากการใช้ ไลบรารีของแพลตฟอร์ม และต้องใช้ Google Identity ที่ใหม่กว่าแทน ไลบรารีบริการ คุณสามารถเลือกค่าใดก็ได้ ซึ่งเป็นชื่อที่สื่อความหมาย เช่น แนะนำให้ใช้ชื่อผลิตภัณฑ์หรือปลั๊กอิน เพื่อระบุตัวตน เช่น plugin_name: 'YOUR_STRING_HERE'

การตรวจสอบสิทธิ์

GoogleAuth เป็นคลาส Singleton ที่มีวิธีการอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ด้วยบัญชี 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)

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

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

GoogleAuth.signIn()

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

การคืนสินค้า
Promise 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 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 Promise จะมีการดำเนินการเมื่อผู้ใช้ลงนาม

GoogleAuth.disconnect()

เพิกถอนขอบเขตทั้งหมดที่ผู้ใช้ให้สิทธิ์

GoogleAuth.grantOfflineAccess(options)

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

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

GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)

แนบขั้นตอนการลงชื่อเข้าใช้กับ Click Handler ของคอนเทนเนอร์ที่ระบุ

อาร์กิวเมนต์
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.isSignedIn()

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

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

GoogleUser.getHostedDomain()

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

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

GoogleUser.getGrantedScopes()

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

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

GoogleUser.getBasicProfile()

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

การคืนสินค้า
gapi.auth2.BasicProfile คุณสามารถดึงข้อมูลพร็อพเพอร์ตี้ของ gapi.auth2.BasicProfile ด้วยวิธีการต่อไปนี้
  • BasicProfile.getId()
  • BasicProfile.getName()
  • BasicProfile.getGivenName()
  • 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)
ความสำเร็จ ฟังก์ชัน Callback ที่จะเรียกใช้เมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ ฟังก์ชันนี้ต้องมีอาร์กิวเมนต์หนึ่งรายการ คือ อินสแตนซ์ของ gapi.auth2.GoogleUser (ค่าเริ่มต้น: ไม่มี)
Onfailure ฟังก์ชัน Callback ที่จะเรียกใช้เมื่อลงชื่อเข้าใช้ไม่สำเร็จ ฟังก์ชันนี้ ไม่ใส่อาร์กิวเมนต์ (ค่าเริ่มต้น: ไม่มี)

ขั้นสูง

gapi.auth2.Authorize(params, callback)

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

กรณีการใช้งานบางส่วนที่วิธีนี้เป็นประโยชน์มีดังนี้

  • แอปพลิเคชันของคุณต้องขออุปกรณ์ปลายทาง Google API เพียงครั้งเดียว เช่น เพื่อโหลด วิดีโอ YouTube ที่ผู้ใช้ชื่นชอบเมื่อลงชื่อเข้าใช้ครั้งแรก
  • แอปพลิเคชันของคุณมีโครงสร้างพื้นฐานการจัดการเซสชันของตนเอง และต้องการเพียง โทเค็นรหัส 1 ครั้งเพื่อระบุผู้ใช้ในแบ็กเอนด์ของคุณ
  • มีการใช้รหัสไคลเอ็นต์หลายรหัสภายในหน้าเดียวกัน
อาร์กิวเมนต์
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 ต้องระบุ รหัสไคลเอ็นต์ของแอปที่พบและสร้างในคอนโซล Google API
scope string ต้องระบุ ขอบเขตที่จะส่งคำขอ เป็นสตริงที่คั่นด้วยช่องว่าง
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 อีเมลหรือรหัสผู้ใช้ของผู้ใช้ที่จะเลือกล่วงหน้าในขั้นตอนการลงชื่อเข้าใช้ มีความเสี่ยงต่อ แก้ไขโดยผู้ใช้ เว้นแต่ว่าจะใช้ prompt: "none"
include_granted_scopes boolean จะขอโทเค็นเพื่อการเข้าถึงที่มีขอบเขตทั้งหมดที่ผู้ใช้ให้สิทธิ์ไว้ก่อนหน้านี้หรือไม่ หรือเฉพาะขอบเขตที่ขอในการเรียกใช้ปัจจุบัน ค่าเริ่มต้นคือ true
enable_granular_consent boolean ไม่บังคับ เลือกว่าจะเปิดใช้หรือไม่ รายละเอียด สิทธิ์ หากตั้งค่าเป็น false ระบบ Google จะแสดงรายละเอียดที่ละเอียดยิ่งขึ้น ระบบจะปิดใช้สิทธิ์ของบัญชีสำหรับรหัสไคลเอ็นต์ OAuth ที่สร้างก่อนวันที่ 2019 ไม่ส่งผลกระทบต่อรหัสไคลเอ็นต์ OAuth ที่สร้างขึ้นระหว่างหรือหลังปี 2019 ตั้งแต่ สิทธิ์ที่ละเอียดยิ่งขึ้นจะเปิดใช้อยู่เสมอ
plugin_name string ไม่บังคับ หากตั้งค่าไว้ รหัสไคลเอ็นต์ที่สร้างขึ้นก่อนวันที่ 29 กรกฎาคม 2022 จะใช้ ไลบรารี Google Platform ระบบจะบล็อกรหัสไคลเอ็นต์ที่สร้างขึ้นใหม่โดยค่าเริ่มต้น ไม่ให้ใช้ไลบรารีแพลตฟอร์ม และต้องใช้ไลบรารีของแพลตฟอร์ม Identity Services Library คุณสามารถเลือกค่าใดก็ได้ ซึ่งเป็นชื่อที่สื่อความหมาย เช่น แนะนำให้ใช้ชื่อผลิตภัณฑ์หรือปลั๊กอินเพื่อให้ระบุได้ง่าย เช่น 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 เมื่อคำขอล้มเหลว อาจมีข้อมูลเพิ่มเติมของรหัสข้อผิดพลาดด้วย ส่งคืนแล้ว