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