ขอขอบเขตเพิ่มเติม

คุณควรขอขอบเขตให้น้อยที่สุดเมื่อลงชื่อเข้าใช้ครั้งแรกเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด หากฟังก์ชันการทํางานหลักของแอปไม่ได้เชื่อมโยงกับบริการของ Google การกําหนดค่าของ GoogleSignInOptions.DEFAULT_SIGN_IN มักจะจําเป็นสําหรับการลงชื่อเข้าใช้

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

คุณควรขอขอบเขตเพิ่มเติมที่จําเป็นสําหรับการเข้าถึง Google API เฉพาะเมื่อผู้ใช้ดําเนินการที่จําเป็นต้องเข้าถึง API หนึ่งๆ เท่านั้น ตัวอย่างเช่น คุณอาจขอสิทธิ์เข้าถึงไดรฟ์ของผู้ใช้เมื่อผู้ใช้แตะปุ่ม "บันทึกไปที่ไดรฟ์&#; ครั้งแรกเท่านั้น

การใช้เทคนิคนี้ช่วยให้คุณหลีกเลี่ยงผู้ใช้ใหม่ที่มากเกินไป หรือทําให้ผู้ใช้สับสนว่าทําไมมีการขอสิทธิ์บางอย่าง

การขอสิทธิ์ที่จําเป็นจากการดําเนินการของผู้ใช้

เมื่อใดก็ตามที่ผู้ใช้ดําเนินการที่ต้องใช้ขอบเขตที่ไม่ได้ขอเมื่อลงชื่อเข้าใช้ ให้โทรหา GoogleSignIn.hasPermissions เพื่อตรวจสอบว่าผู้ใช้ได้รับสิทธิ์ที่จําเป็นแล้วหรือยัง หากไม่ใช่ ให้เรียก GoogleSignIn.requestPermissions เพื่อเปิดกิจกรรมที่ขอขอบเขตเพิ่มเติมที่จําเป็นจากผู้ใช้

เช่น หากผู้ใช้ดําเนินการที่ต้องการสิทธิ์เข้าถึงพื้นที่เก็บข้อมูล Google ไดรฟ์ของแอป ให้ทําตามขั้นตอนดังนี้

if (!GoogleSignIn.hasPermissions(
        GoogleSignIn.getLastSignedInAccount(getActivity()),
        Drive.SCOPE_APPFOLDER)) {
    GoogleSignIn.requestPermissions(
            MyExampleActivity.this,
            RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,
            GoogleSignIn.getLastSignedInAccount(getActivity()),
            Drive.SCOPE_APPFOLDER);
} else {
    saveToDriveAppFolder();
}

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

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {
            saveToDriveAppFolder();
        }
    }
}

นอกจากนี้ คุณยังส่งผ่าน GoogleSignInOptionsExtension ไปยัง hasPermissions และ requestPermissions เพื่อตรวจสอบและขอสิทธิ์ชุดหนึ่งได้อย่างสะดวกยิ่งขึ้น