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

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