2016-04-27 11 views
0

Ich habe versucht, Google Drive-Datei-Erlaubnis zu aktualisieren, d. H. Versucht, neue Rolle zu geben. Aber es wirft eine Ausnahme auf. Hier ist der Beispielcode.Wie können Google Drive-Dateiberechtigungen mit der REST-API aktualisiert werden?

Permission content = new Permission(); 
permission.setRole("Reader"); 
permission.setType("user"); 
permission.setEmailAddress("[email protected]"); 
driveService.permissions().update(fileId, permissionId, permission).queue(batch, callback); 

Für diesen Beispielcode habe ich Json Ausnahme als

mich
{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "fieldNotWritable", 
    "message": "The resource body includes fields which are not directly writable." 
    } 
    ], 
    "code": 403, 
    "message": "The resource body includes fields which are not directly writable." 
} 
} 

Kann einige helfen folgt, wie diese zu lösen?

+0

Wie ist das in Java Drive REST API V3 möglich? – Venkat

Antwort

0

Ich denke, Sie müssen zuerst die Erlaubnis von der API haben. Sie vermissen diese Zeile:

Genehmigungserlaubnis = service.permissions(). Get ( fileId, permissionId) .execute();

mag:

public class MyClass { 

// ... 

/** 
* Update a permission's role. 
* 
* @param service Drive API service instance. 
* @param fileId ID of the file to update permission for. 
* @param permissionId ID of the permission to update. 
* @param newRole The value "owner", "writer" or "reader". 
* @return The updated permission if successful, {@code null} otherwise. 
*/ 
private static Permission updatePermission(Drive service, String fileId, 
String permissionId, String newRole) { 

    try { 
     // First retrieve the permission from the API. 
     Permission permission = service.permissions().get(fileId, permissionId).execute(); 

     permission.setRole(newRole); 

     return service.permissions().update(fileId, permissionId, permission).execute(); 

    } catch (IOException e) { 
     System.out.println("An error occurred: " + e); 
    } 

    return null; 

} 

// ... 

} 

Mehr Details in der Dokumentation here.

+0

Dies funktioniert in Drive REST API V2, aber nicht in V3. Gibt es eine Alternative zum Aktualisieren von Berechtigungen in V3? – Venkat

1

Ich habe einen Fehler gemacht, d. H. Benutzer E-Mail-Adresse hinzugefügt und geben Sie auch in Anfrage abgesehen von Benutzer neue Rolle. Diese beiden Felder sind in Drive REST API v3 jedoch nicht überschreibbar. Also habe ich eine Ausnahme bekommen. Korrigierter Beispielcode lautet wie folgt

Permission content = new Permission(); 
content.setId(id_of_the_file); 
content.setRole("Reader"); 
driveService.permissions().update(fileId, permissionId, permission).setFields("role").execute();