Я пытаюсь на самом деле авторизовать несколько учетных записей Google, а затем создать несколько Диск объектов, чтобы иметь возможность выполнять операции с файловой системой от имени обоих авторизованных пользователей одновременно.Проблема заключается в том, что GoogleSignInClient позволяет войти в систему только с одним пользователем одновременно, а GoogleSignIn запрашивает только последнюю зарегистрированную учетную запись ( getLastSignedInAccount ) и существуетнет возможности получить все авторизованные учетные записи, значит, я могу управлять только одним подключением Drive одновременно.Есть ли способ дать пользователю возможность подключить все свои учетные записи одновременно?
Я пытаюсь достичь того же, что и собственное приложение для выбора файлов Android, в котором одновременно доступны все доступные учетные записи дисков:
Теперь у меня есть рабочий образец только для одной учетной записи:
private fun requestSignIn() {
val signInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(Scope(DriveScopes.DRIVE))
.build()
client = GoogleSignIn.getClient(this, signInOptions)
// The result of the sign-in Intent is handled in onActivityResult.
startActivityForResult(client?.signInIntent, REQUEST_CODE_SIGN_IN)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
REQUEST_CODE_SIGN_IN -> {
if (resultCode == Activity.RESULT_OK && data != null) {
handleSignInResult(data)
}
}
else -> super.onActivityResult(requestCode, resultCode, data)
}
}
private fun handleSignInResult(data: Intent) {
GoogleSignIn.getSignedInAccountFromIntent(data)
.addOnSuccessListener {
val credential =
GoogleAccountCredential.usingOAuth2(this, Collections.singleton(DriveScopes.DRIVE))
credential.selectedAccount = it.account
val googleDriveService = Drive.Builder(
AndroidHttp.newCompatibleTransport(),
GsonFactory(),
credential)
.setApplicationName("CCFS")
.build()
// use drive service for a specific account
}
.addOnFailureListener {
Log.e("QWER", "Unable to sign in.", it)
}
}
Теперь, чтобы подключиться к другому пользователю, я должен выйти из предыдущего ивойдите с новым.Невозможно поддерживать двух зарегистрированных пользователей.