2017-03-02 82 views
0

あなたのシステムのサービスアカウントで使用するためのアプリケーションを作成しています。別のユーザー(ユーザー-2)がカスタムアプリケーションリストにアプリキーを追加することでこのアプリを承認しました。このUser-2のUserIDを取得するにはどうすれば、偽装してファイルリストやファイルなどにアクセスできるのですか?ユーザーIDが必要なので、「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に最も近いIDであるためです。 2.今、上記のコード行が返されます: "type": "error"、 "status":403、 "code": "access_denied_insufficient_permissions" – RajN

関連する問題