การขอขอบเขตเพิ่มเติม

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

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

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

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

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

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

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

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();
}

ใน Callback 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 เพื่อตรวจหาและรับชุดสิทธิ์เพิ่มเติม ได้อย่างสะดวก