בקשה להיקפים נוספים

כדי ליהנות מחוויית המשתמש הטובה ביותר, מומלץ לבקש כמה שפחות היקפים הכניסה הראשונית של משתמשים. אם הפונקציונליות העיקרית של האפליקציה לא קשורה שירות 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 כדי לחפש ולקבל קבוצת הרשאות נוספות בצורה נוחה.