כדי להעניק את חוויית המשתמש הטובה ביותר, יש לבקש כמה שפחות היקפים בכניסה למשתמשים. אם הפונקציונליות העיקרית של האפליקציה לא קשורה לשירות של Google, ההגדרה של GoogleSignInOptions.DEFAULT_SIGN_IN
היא לרוב כל מה שנחוץ בכניסה לחשבון.
אם באפליקציה יש תכונות שיכולות להשתמש בנתוני Google API, אבל הן לא נדרשות כחלק מהפונקציונליות העיקרית של האפליקציה, צריך לתכנן את האפליקציה כך שיוכל לטפל בחינניות במקרים שבהם אין גישה לנתוני ה-API. לדוגמה, אפשר להסתיר רשימה של קבצים שנשמרו לאחרונה אם המשתמש לא העניק גישה ל-Drive.
כדאי לבקש היקפים נוספים שנדרשים להם גישה ל-Google APIs רק כשהמשתמש מבצע פעולה שדורשת גישה ל-API מסוים. לדוגמה, אתם יכולים לבקש הרשאת גישה של המשתמש ל-Drive רק כשהמשתמש מקיש בפעם הראשונה על 'שמירה ב-Drive'.
בעזרת השיטה הזו אפשר להימנע מהצפת משתמשים חדשים או מבלבל משתמשים שבגללם הם מתבקשים לתת הרשאות מסוימות.
בקשת ההרשאות הנדרשות לפעולות של משתמשים
בכל פעם שמשתמש מבצע פעולה שמחייבת היקף שלא התבקש בכניסה לחשבון, מתבצעת קריאה ל-GoogleSignIn.hasPermissions
כדי לבדוק אם המשתמש כבר העניק את ההרשאות הנדרשות. אם לא, צריך לקרוא ל-GoogleSignIn.requestPermissions
כדי להפעיל פעילות שמבקשת מהמשתמש את ההיקפים הנוספים הנדרשים.
לדוגמה, אם משתמש מבצע פעולה שמחייבת גישה לאחסון שלו באפליקציית Drive:
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
כדי לבדוק את ההרשאות ולקבל אותן בצורה נוחה יותר.