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