2017-03-02 37 views
0

我們正在創建一個應用程序,旨在與系統中的服務帳戶一起使用;另一個用戶(user-2)通過將我們的應用程序密鑰添加到他們的自定義應用程序列表中來授權此應用我如何得到這個User-2的UserID,所以我們可以模擬他並訪問他的文件列表和文件等等。我們需要他們的UserID,所以我們可以通過「AS-User:」標題。並且可以使用.NET SDK中的某些屬性來設置此頭文件 - 我們將欣賞示例代碼。Box.com API使用 - 獲取文件夾計數作爲服務應用程序

回答

0

這對所有企業用戶都適用,但是您可以輕鬆放置if語句以獲取您要查找的用戶。

static async Task MainAsync() 
    { 
     // rename the private_key.pem.example to private_key.pem and put your JWT private key in the file 
     var privateKey = File.ReadAllText(PRIVATE_KEY_FILE); 

     var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); 
     var boxJWT = new BoxJWTAuth(boxConfig); 

     var adminToken = boxJWT.AdminToken(); 
     Console.WriteLine("Admin Token: " + adminToken); 
     Console.WriteLine(); 

     var adminClient = boxJWT.AdminClient(adminToken); // adminClient == serviceAccount 

     var userDetails = await adminClient.UsersManager.GetCurrentUserInformationAsync(); 
     Console.WriteLine("\tAdmin User Details:"); 
     Console.WriteLine("\tId: {0}", userDetails.Id); 
     Console.WriteLine("\tName: {0}", userDetails.Name); 
     Console.WriteLine("\tStatus: {0}", userDetails.Status); 
     Console.WriteLine(); 

     var users = await adminClient.UsersManager.GetEnterpriseUsersAsync(); 
     users.Entries.ForEach(i => 
     { 
      Console.WriteLine("\t{0}", i.Name); 
      Console.WriteLine("\t{0}", i.Status); 

      if (i.Status == "active") 
      { 
       var userToken = boxJWT.UserToken(i.Id); 
       var userClient = boxJWT.UserClient(userToken, i.Id); 

       Task u = getUserItems(userClient, i.Id); 
       u.Wait();          
      } 

     }); 
    } 

    static async Task getUserItems(BoxClient userClient, string id) 
    { 
     var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync(); 
     Console.WriteLine("\nManaged User Details:"); 
     Console.WriteLine("\tId: {0}", userDetails.Id); 
     Console.WriteLine("\tName: {0}", userDetails.Name); 
     Console.WriteLine("\tStatus: {0}", userDetails.Status); 
     Console.WriteLine(); 

     Console.WriteLine("managed users older items"); 
     var items = await userClient.FoldersManager.GetFolderItemsAsync("0", 500); 
     items.Entries.ForEach(i => 
     { 
      Console.WriteLine("\t{0}", i.Name); 
     }); 
     Console.WriteLine(); 
    } 
+0

感謝您的答覆肯,但我們的應用程序將被作爲服務運行等(box.com)的用戶將使用它,所以我們的應用程序需要模擬該用戶,所以我們可以向他們展示自己的文件/文件夾。 因此,根據您上面的代碼邏輯,我們將採用ServiceAccount方式來完成它。 – RajN

+0

我的代碼是這樣的: 'code'var adminClient = boxJWT.AdminClient(adminToken,asUser:USER_ID); var items = await adminClient.FoldersManager.GetFolderItemsAsync(「0」,500); //引發權限異常代碼 1.我不確定UserID應該是什麼,並且從User-2的帳戶中找到它?在等待時,我們嘗試使用User-2的應用程序ID,因爲這是我們可以找到的最接近某個ID的。 2.現在,上面的代碼行返回給我這個: 「type」:「error」,「status」:403,「code」:「access_denied_insufficient_permissions」 – RajN

相關問題