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

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

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