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

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

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