2016-06-07 2 views
2

Ich baue eine Integration zwischen meinen Back-End-Systemen und BOX.BOX: Hinzufügen von Collaboration zu einem Ordner mit dem Benutzer-Token AppUser

Eines der Szenarien ist, dass wenn ein bestimmtes Ereignis in meiner Organisation passiert, ein Ordner in BOX erstellt werden muss und diesem Ordner Kollaborationsobjekte hinzugefügt werden müssen (Gruppen mit dem Ordner verbinden).

Ich habe kein Problem, den Ordner zu erstellen, aber beim Versuch, die Zusammenarbeit zu schaffen, ich die folgende Störung erhalte:

Box.V2.Exceptions.BoxException: Bearer realm = "Service", error = "insufficient_scope ", error_description =" Die Anfrage erfordert höhere Privilegien als das Zugriffstoken. "

Ich verwende BOX SDK für .Net, um mit BOX zu interagieren.

Die Anwendung, die ich in BOX erstellt habe, wurde zugewiesen, um den Benutzertyp AppUser zu verwenden, und ich habe alle Bereiche bereitgestellt, die BOX mir erlaubt (Alle Bereiche außer "Unternehmen verwalten", die deaktiviert ist).

Der Code, der nicht ist (C#):

var privateKey = File.ReadAllText(Settings.JwtPrivateKeyFile); 
var boxConfig = new BoxConfig(Settings.ClientID, Settings.ClientSecret, Settings.EnterpriseID, privateKey, Settings.JwtPrivateKeyPassword, Settings.JwtPublicKeyID); 
var jwt = BoxJWTAuth(boxConfig); 
var token = jwt.AdminToken(); 
var client = jwt.AdminClient(token); 

var addRequest = new BoxCollaborationRequest(){ 
    Item = new BoxRequestEntity() { 
     Id = folderId, 
     Type = BoxType.folder 
    }, 
    AccessibleBy = new BoxCollaborationUserRequest(){ 
     Type = [email protected], 
     Id = groupId 
    }, 
    Role = "viewer" 
}; 
var api = client.CollaborationsManager; 
var task = api.AddCollaborationAsync(addRequest); 
task.Wait(); 

Wenn dieser Code ausgeführt wird, aber die Admin-Token ersetzt mit Entwickler-Token aus der Box applicaiton Seite bearbeiten erzeugt es funktioniert.

Jede Hilfe

Antwort

0

Wenn die App Benutzer ein Mitglied der Gruppe (n) ist möchten, dass Sie den Ordner zugreifen zu können, zu schätzen wissen, dann müssen Sie sollten eine Zusammenarbeit einzurichten, sollte der Benutzer nur Zugang haben.

+0

Das hilft nicht wirklich bei der Beantwortung der Frage ... Wie würden die Benutzer "nur Zugang haben", wenn es nicht explizit angegeben ist? – Taegost

1

OK, ich hatte lange Diskussion mit BOX Technical Team und hier ist die Schlussfolgerung: Die Verwendung von AppUser ist nicht die richtige Wahl für mein Szenario, weil es nur auf die Ordner beschränkt ist, die es erstellt. Es gibt keine Möglichkeit, es zu umgehen. Die Lösung lautet: 1. Konfigurieren Sie die Anwendung für die Verwendung des Standardbenutzers 2. Erstellen Sie einen Benutzer mit Administratorrechten, die von der API für Aktivitäten in BOX verwendet werden. Ich nannte diesen Benutzer "API-Benutzer" 3. Befolgen Sie das oAuth 2-Lernprogramm, um ein Zugriffstoken und ein Aktualisierungstoken zu generieren, das von der API .NET-Anwendung verwendet werden kann, anstatt Token für den AppUser zu generieren. Das oAuth 2 tutorial finden Sie unter https://www.box.com/blog/get-box-access-tokens-in-2-quick-steps/

Verwandte Themen