การขอสิทธิ์เพิ่มเติม

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

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

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

กำลังขอขอบเขตเพิ่มเติม

เมื่อลงชื่อเข้าใช้ แอปของคุณจะขอ "base" ขอบเขต ซึ่งรวมถึงขอบเขตการลงชื่อเข้าใช้ profile รวมถึงขอบเขตเริ่มต้นอื่นๆ ที่แอปของคุณต้องใช้ในการดำเนินการ หลังจากนั้น เมื่อผู้ใช้ต้องการดําเนินการที่ต้องมี แอปของคุณจะขอขอบเขตเพิ่มเติมเหล่านั้น และผู้ใช้ให้สิทธิ์เท่านั้น ขอบเขตใหม่จากหน้าจอขอความยินยอม

ขั้นตอนที่ 1: ขอขอบเขตพื้นฐาน

ขอขอบเขตพื้นฐาน profile เมื่อคุณเริ่มต้น Google Sign-In ช่วงเวลานี้ ขั้นตอนรวมอยู่ใน การสร้างปุ่มลงชื่อเข้าใช้ Google 2.0

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' });                /** Base scope **/

ขั้นตอนที่ 2: ขอขอบเขตเพิ่มเติม

เมื่อใดก็ตามที่ต้องการขอบเขตเพิ่มเติม ให้ขอขอบเขตด้วยการสร้างตัวเลือก เครื่องมือสร้างที่มีขอบเขตที่คุณต้องการเพิ่มแล้วเรียกใช้ user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction);:

const options = new gapi.auth2.SigninOptionsBuilder();
options.setScope('email https://www.googleapis.com/auth/drive');

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });