為了提供最佳使用者體驗,一開始註冊使用者時,請盡量減少要求範圍。如果應用程式的核心功能未與 Google 服務綁定,GoogleSignInOptions.DEFAULT_SIGN_IN
設定通常只需要登入即可。
如果您的應用程式具有可使用 Google API 資料的功能,但並非應用程式核心功能的必要功能,則應設計您的應用程式,以便在無法存取 API 資料時順利處理案例。舉例來說,當使用者尚未授予雲端硬碟存取權時,您可以隱藏最近儲存的檔案清單。
只有當使用者執行需要存取特定 API 的動作時,您才需要要求其他範圍來存取 Google API。舉例來說,只有在使用者首次輕觸「儲存至雲端硬碟」按鈕時,才能要求存取使用者的雲端硬碟。
使用這項技術,您就能避免大量新使用者感到混淆,或讓使用者難以瞭解要求特定權限的原因。
要求使用者動作所需的權限
當使用者執行需要登入時要求的範圍時,請呼叫 GoogleSignIn.hasPermissions
檢查使用者是否是否已授予必要權限。如果沒有,請呼叫 GoogleSignIn.requestPermissions
來啟動活動,以要求使用者提供其他必要範圍。
舉例來說,如果使用者執行需要存取雲端硬碟儲存空間應用程式的動作,請執行下列步驟:
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
,以便更輕鬆地檢查及取得一組權限。