เมื่อขอสิทธิ์จากผู้ใช้เพื่อเข้าถึงข้อมูลผู้ใช้หรือทรัพยากรอื่นๆ คุณจะขอขอบเขตทั้งหมดล่วงหน้าในคำขอเริ่มต้น หรือขอขอบเขตเท่าที่จำเป็นเท่านั้นก็ได้ โดยใช้การให้สิทธิ์ที่เพิ่มขึ้น เมื่อใช้การให้สิทธิ์ที่เพิ่มขึ้น ในตอนแรกแอปจะขอเฉพาะขอบเขตที่จำเป็นในการเริ่มต้นแอป จากนั้นขอขอบเขตเพิ่มเติมเนื่องจากต้องมีสิทธิ์ใหม่ในบริบทที่ระบุเหตุผลของคำขอไปยังผู้ใช้
ตัวอย่างเช่น สมมติว่าแอปของคุณอนุญาตให้ผู้ใช้บันทึกเพลย์ลิสต์เพลง ลงใน 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}));
});