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

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

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

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

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