Beispiel #1
0
        private void RunExchange()
        {
            base.CheckForValue(this._scope.Value, this._app, "A scope is required for this command");
            var           Box = base._boxPlatformBuilder.Build();
            TokenExchange tokenExchange;

            if (this._token.HasValue())
            {
                tokenExchange = new TokenExchange(this._token.Value(), this._scope.Value);
            }
            else if (this._user.HasValue())
            {
                tokenExchange = new TokenExchange(Box.GetUserToken(this._user.Value()), this._scope.Value);
            }
            else
            {
                tokenExchange = new TokenExchange(Box.GetServiceAccountToken(), this._scope.Value);
            }

            if (this._fileId.HasValue())
            {
                tokenExchange.SetResource($"{base.FilesResourceUrl}{this._fileId.Value()}");
            }
            else if (this._folderId.HasValue())
            {
                tokenExchange.SetResource($"{base.FoldersResourceUrl}{this._folderId.Value()}");
            }

            Reporter.WriteInformation($"Scoped token: {tokenExchange.Exchange()}");
        }
Beispiel #2
0
        private static async Task MainAsync(string token, string fileId, string folderId)
        {
            var client   = CreateClientByToken(token);
            var fileInfo = await client.FilesManager.GetInformationAsync(fileId);

            Console.WriteLine(string.Format("File name is {0} ", fileInfo.Name));

            // var resource = string.Format("https://api.box.com/2.0/files/{0}", fileId);
            var resource = string.Format("https://api.box.com/2.0/folders/{0}", folderId);

            var scope         = "root_readwrite";
            var tokenExchange = new TokenExchange(token, scope);

            // Check resource to be optional
            var token1 = await tokenExchange.ExchangeAsync();

            _ = CreateClientByToken(token1);

            // Set resource
            tokenExchange.SetResource(resource);
            var token2 = await tokenExchange.ExchangeAsync();

            var client2 = CreateClientByToken(token2);

            try
            {
                await client2.FilesManager.GetInformationAsync(fileId);
            }
            catch (BoxException exp)
            {
                // The new token does not have access to the file any more.
                Console.WriteLine("Permission denied!");
                Console.WriteLine(exp);
            }

            // Can still access the folder.
            var folderInfo = await client2.FoldersManager.GetInformationAsync(folderId);

            Console.WriteLine(folderInfo.Name);

            /*
             * // Set ActorToken
             * var actorTokenBuilder = new ActorTokenBuilder("FAKE_USER_ID", "YOUR_CLIENT_ID");
             * var actorToken = actorTokenBuilder.build();
             *
             * tokenExchange.setActorToken(actorToken);
             * var tokenWAT1 = tokenExchange.exchange();
             *
             * // Set ActorToken w/ user name
             * actorTokenBuilder.setUserName("uname");
             * actorToken = actorTokenBuilder.build();
             *
             * tokenExchange.setActorToken(actorToken);
             * var tokenWAT2 = tokenExchange.exchange();
             */
        }
Beispiel #3
0
        public async Task ExchangeCodeForToken(string code)
        {
            if (string.IsNullOrEmpty(TokenResult.CsrfToken))
            {
                await SetCsrfToken();
            }

            var exchange   = new TokenExchange(_credentials.ClientId, _credentials.RedirectUri, code);
            var requestMsg = await GetHttpResponse <TokenResult>(HttpMethod.Post, "oauth/token", JsonConvert.SerializeObject(exchange));

            var tokenMsg = await requestMsg.Content.ReadAsStringAsync();

            TokenResult = JsonConvert.DeserializeObject <TokenResult>(tokenMsg);
        }
        public async Task TokenExchange_LiveSession()
        {
            var token    = _client.Auth.Session.AccessToken;
            var fileId   = "16894965489";
            var folderId = "1927307787";

            var client   = CreateClientByToken(token);
            var fileInfo = await client.FilesManager.GetInformationAsync(fileId);

            // var resource = string.Format("https://api.box.com/2.0/files/{0}", fileId);
            var resource = string.Format("https://api.box.com/2.0/folders/{0}", folderId);

            var scopes = new List <string> {
                "item_preview", "item_delete"
            };
            var tokenExchange = new TokenExchange(token, scopes);

            // Check resource to be optional
            var token1  = tokenExchange.Exchange();
            var client1 = CreateClientByToken(token1);

            // Should be able to access the file
            var file1 = await client1.FilesManager.GetInformationAsync(fileId);

            Assert.IsNotNull(file1.Id);

            // Set resource
            tokenExchange.SetResource(resource);
            var token2  = tokenExchange.Exchange();
            var client2 = CreateClientByToken(token2);

            try
            {
                await client2.FilesManager.GetInformationAsync(fileId);

                Assert.Fail();
            }
            catch (BoxException exp)
            {
                // The new token does not have access to the file any more.
            }

            // Can still access the folder.
            var folderInfo = await client2.FoldersManager.GetInformationAsync(folderId);

            Assert.IsNotNull(folderInfo.Name);
        }
        static async Task MainAsync()
        {
            try
            {
                /* Read the config file that is provided when an application is
                 * created in the Box Dev Consolse
                 * */

                string jsonConfig = System.IO.File.ReadAllText(configFile());
                var    config     = BoxConfig.CreateFromJsonString(jsonConfig);
                /* Authenticate. This will provide access to the service account */
                var boxJWT     = new BoxJWTAuth(config);
                var adminToken = "";
                adminToken = boxJWT.AdminToken();
                Console.WriteLine("Admin Token:" + adminToken);

                /*
                 * Searching for a particular user from the enterprise given the login name
                 */
                BoxClient boxClient = boxJWT.AdminClient(adminToken);
                BoxCollection <BoxUser> boxUserCollection = await boxClient.UsersManager.GetEnterpriseUsersAsync(userLogin(), 0, 100, null, "managed", null, false);

                List <BoxUser> userList = boxUserCollection.Entries;
                Console.WriteLine("Entries:" + userList.Count);
                if (userList.Count > 0)
                {
                    foreach (var user in userList)
                    {
                        Console.WriteLine("User Login:"******" ID:" + user.Id);
                    }
                }

                /* Replace this variable for the user you want. This is the users
                 * internal Box ID and is all numbers e.g. 3445252385. Suggest that
                 * the list of users in the system is cached in the Token Factory
                 * and synced perdiodically.
                 */
                var userId = userInformation();
                /* Ask box for a token for the user */
                var userToken = boxJWT.UserToken(userId);

                Console.WriteLine("User Token:" + userToken);
                /* Generate a downscoped token to the ITEM_PREVIEW scope */
                var exchanger = new TokenExchange(adminToken, "item_preview");

                /*Optionally you can downscope to a particular resource. Omitting this will downscope
                 * all resources to the scope set above regardless of resource.
                 * exchanger.SetResource("https://api.box.com/2.0/files/123456789");
                 */
                string downscopedToken = exchanger.Exchange();
                Console.WriteLine("Downscoped ITEM_PREVIEW Token:" + downscopedToken);
                /* Print out some user information for the demo */
                var userClient = boxJWT.UserClient(userToken, userId);

                var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync();

                Console.WriteLine("\n User Details:");
                Console.WriteLine("\tId: {0}", userDetails.Id);
                Console.WriteLine("\tName: {0}", userDetails.Name);
                Console.WriteLine("\tStatus: {0}", userDetails.Status);
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }