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

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

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