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()}"); }
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(); */ }
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); } }