Передача права на загрузку файла. Google Drive API v3. Kotlin - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть служебная учетная запись gService, которая загружает файл на Google Drive через API. Мне нужно изменить владельца файла с этой учетной записи службы на new_owner@gmail.com учетную запись

fun uploadFile(country: String, fileType: String, file: File, ownerId: String): String {
    val gFile = com.google.api.services.drive.model.File()
    gFile.name = "$ownerId ${getCurrentTime()}"//i set name of file according to date and user
    gFile.parents = listOf(foldersIds[country]!![fileType]!!)//folder on my google drive

    val content = FileContent(null, file)
    var uploadedGFile = gService.Files().create(gFile, content)
        .execute()

   var userPermission = Permission()
        .setType("user")
        .setRole("owner")
        .setKind("drive#permission")
        .setEmailAddress("new_owner@gmail.com")

    var permissions11 = gService.permissions().list(uploadedGFile.id).execute()//here i get permissionId

    try {//i wrapped it for exception printing
        gService.permissions().update(uploadedGFile.id, "03593465321157002914", userPermission)
            //.setTransferOwnership(true)
            .execute()
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return uploadedGFile.id
}  

У меня есть эта ошибка: enter image description here

Если я раскомментирую .setTransferOwnership(true) тогда я получу следующую ошибку enter image description here

Как программно установить нового владельца перед загрузкой файла на диск Google?

ОБНОВЛЕНИЕ , но если Я делаю так

`fun uploadFile(country: String, fileType: String, file: File, ownerId: String): String {
        val gFile = com.google.api.services.drive.model.File()
        gFile.name = "$ownerId ${getCurrentTime()}"//i set name of file according to date and user
        gFile.parents = listOf(foldersIds[country]!![fileType]!!)//folder on my google drive



val content = FileContent(null, file)
        var uploadedGFile = gService.Files().create(gFile, content)
            .execute()

    var userPermission = Permission()
        .setType("user")
        .setRole("owner")
        .setKind("drive#permission")
        .setEmailAddress("new_owner@gmail.com")

    var permissions11 = gService.permissions().list(uploadedGFile.id).execute()//here i get permissionId

    try {//i wrapped it for exception printing
        gService.permissions().create(uploadedGFile.id, userPermission)
            .setTransferOwnership(true)
            .execute()
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return uploadedGFile.id
}`

У меня есть это милое сообщение
enter image description here

...