2017-10-23 9 views
-1

Ich versuche, eine Windows-Anwendung (. NET, C#) zu erstellen, die eine Liste der Dateien im Ordner Box.com erhalten wird. Offenbar einer der Schritte beim Konfigurieren einer Die neue Box-App, die die JWT-Autorisierung verwendet, erstellt einen App-Benutzer mit dem SDK (Box.V2). Ich habe den folgenden Code aus einigen Beispielen in der SDK-Dokumentation genommen. Die CreateEnterpriseUserAsync() Aufruf schlägt fehl mit der Fehlermeldung:Admin-Konto verfügt nicht über ausreichende Berechtigungen zum Erstellen von App-Benutzer

BoxException: "Der Antrag höhere Privilegien erfordert, als durch die Zugriffstoken zur Verfügung gestellt" Bearer realm = "Service", error = "insufficient_scope", ERROR_DESCRIPTION =

Ich bin der Account-Administrator, also sollte ich alle Rechte haben. Ich verwende jedoch ein Entwicklerkonto mit nur einem Platz. . . nicht sicher, ob das die Begrenzung ist. Ich wäre dankbar für jede Hilfe!

Der Fehler tritt etwa 3/4 des Weges in der Probe auf, wo angegeben.

namespace Trial5 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     var t = Configure(); 
     t.Wait(); 
    } 

    private static async Task Configure() 
    { 
      // Open a stream to read the Box configuration file. 
      using (System.IO.FileStream fs = new FileStream($"./BoxConfig.json", FileMode.Open)) 
      { 

      //configure ----------------------------------------------------------------- 
      var boxConfig = BoxConfig.CreateFromJsonFile(fs); 
      var boxJWT = new BoxJWTAuth(boxConfig); 

      //authenticate ----------------------------------------------------------------- 
      var adminToken = boxJWT.AdminToken(); //valid for 60 minutes so should be cached and re-used 
      var adminClient = boxJWT.AdminClient(adminToken); 

      // Use the GetCurrentUserInformationAsync method to retrieve current user's information. 
      // Since this client uses the Service Account, this will return the Service Account's information. 
      var adminClientInfo = await adminClient.UsersManager.GetCurrentUserInformationAsync(); 
      //See the login 
      Console.WriteLine(adminClientInfo.Login); 

      //create app user ----------------------------------------------------------------- 
      //NOTE: you must set IsPlatformAccessOnly=true for an App User 
      var userRequest = new BoxUserRequest() { Name = "test appuser1", IsPlatformAccessOnly = true }; 
      var appUser = await adminClient.UsersManager.CreateEnterpriseUserAsync(userRequest); // <---------------ERROR HERE 

      //get a user client ----------------------------------------------------------------- 
      var userToken = boxJWT.UserToken(appUser.Id); //valid for 60 minutes so should be cached and re-used 
      var userClient = boxJWT.UserClient(userToken, appUser.Id); 

      //for example, look up the app user's details 
      var userClientInfo = await userClient.UsersManager.GetCurrentUserInformationAsync(); 

      //Get folder info 
      var items = await userClient.FoldersManager.GetFolderItemsAsync("0", 500); 

     } 
     } 
    } 
    } 
+0

Lieber @kendoman, Sie haben vor meinem Guru gewesen. Könnte ich dich wieder belästigen? –

+0

Benachrichtigungen funktionieren nur, wenn der betreffende Benutzer innerhalb des Themas selbst aktiv war. Sie können Benutzer nicht einfach von einem beliebigen verfügbaren Thema aus anpingen. Sie müssen ein bisschen debuggen, um zu sehen, wo Ihr Code fehlschlägt, und dann mit einem bestimmten Fehler zurückkommen, nicht nur erwähnen, dass wenn 3 Quartale nach unten der Code, das ist gut, ein bisschen zu leicht Ihrerseits – Icepickle

+0

@Icepickle, I habe über die Markierung erfahren, die du erwähnt hast, nachdem ich es getan habe. Entschuldigen Sie. Allerdings habe ich stundenlang versucht, es selbst zu debuggen. Ich habe meinen gesamten Quellcode (der in ein leeres Projekt eingefügt werden konnte) vorgestellt, Ihnen den vollständigen Text der Fehlermeldung gegeben und angegeben, wo er aufgetreten ist. Ich bin mir nicht sicher, wie viel mehr ich hätte tun können. –

Antwort

0

Wenn Sie „Manager-Benutzer“ scope auf der App-Konsole überprüfen und dann die App in der Enterprise Admin-Konsole unter „Apps“ neu aktivieren, sollte es funktionieren.

enter image description here

+0

Danke! Ich habe nicht daran gedacht, eine erneute Autorisierung zu versuchen. Ich werde es versuchen und Sie wissen lassen, wie es geht. Schätze wirklich deine Hilfe. (Sorry, ich habe deinen Namen falsch geschrieben!) –

Verwandte Themen