בקשת עוד היקפים

כדי ליהנות מחוויית המשתמש הטובה ביותר, מומלץ לבקש כמה שפחות היקפי הרשאות כשמתחברים בפעם הראשונה. אם הפונקציונליות העיקרית של האפליקציה לא קשורה לשירות של Google, לרוב מספיק להשתמש בהגדרה GoogleSignInOptions.DEFAULT_SIGN_IN כדי להיכנס.

אם לאפליקציה שלכם יש תכונות שיכולות להשתמש בנתוני Google API, אבל הן לא נדרשות כחלק מהפונקציונליות העיקרית של האפליקציה, אתם צריכים לתכנן את האפליקציה כך שהיא תוכל לטפל בצורה חלקה במקרים שבהם נתוני ה-API לא נגישים. לדוגמה, יכול להיות שתסתירו רשימה של קבצים שנשמרו לאחרונה אם המשתמש לא העניק גישה ל-Drive.

כדאי לבקש היקפי הרשאות נוספים שנדרשים לגישה לממשקי Google API רק כשהמשתמש מבצע פעולה שדורשת גישה ל-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();
}

ב-onActivityResultcallback של הפעילות, אפשר לבדוק אם ההרשאות הנדרשות התקבלו בהצלחה, ואם כן, לבצע את פעולת המשתמש.

@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 כדי לבדוק ולקבל קבוצת הרשאות בצורה נוחה יותר.