2016-02-25 41 views
3

我想从文件中删除权限。如何在Drive API v3中获得permissionId?

驱动器API V2,

PermissionId permissionId = service.permissions().getIdForEmail(account).execute(); 
service.permissions().delete(fileId, permissionId.getId()).execute(); 

但根据文件,权限()。getIdForEmail(字符串email)被删除,替换什么。

https://developers.google.com/drive/v3/web/migration

我无法找到如何从驱动器API V3具体EMAILADDRESS得到permissionId。

你有什么想法?

+0

这是因为这里所说的现有问题:https://code.google.com/a/google.com/p/apps-api-issues/问题/细节?ID = 4313。 – abielita

回答

1

两年后,但您的问题是我在搜索解决方案时发现的第一个结果。我发现了一个解决方法,我希望这可以帮助其他人解决同样的问题。这是我做过什么,以获得许可ID:

this.getPermissionId = function(emailAddress) { 
    return new Promise((resolve, reject) => { 

     const input = { 
     q: '"' + emailAddress + '" in writers or "' + emailAddress + '" in readers', 
     fields: 'files(permissions)', 
     pageSize: 1 
     }; 

     const request = gapi.client.drive.files.list(input); 

     request.execute(result => { 
     if(result.error) { 
      reject(result.error); 
     } else if(result.files && result.files[0] && result.files[0].permissions && result.files[0].permissions[0]) { 
      const permissions = result.files[0].permissions; 
      let permissionId; 
      permissions.forEach(permission => { 
      if(permission.emailAddress == emailAddress) { 
       permissionId = permission.id; 
      } 
      }); 

      if(permissionId) { 
      resolve(permissionId); 
      } 

      else { 
      reject('permissionIdUndefined'); 
      } 
     } 
     }); 


    }) 
    }; 
相关问题