public OAuth2Session(string hostUrl, ClientCredentials clientCredentials, ITokenGrantData grantData)
 {
     _credentials = clientCredentials;
     _grantData   = grantData;
     _restClient  = new ApiClient(hostUrl);
     _tokenApi    = new TokenApi(_restClient);
     RefreshToken();
 }
        public Task <AccessToken> Create(ClientCredentials input, ITokenGrantData grantData)
        {
            ArgumentChecks.IsNotNull(input, nameof(input));
            ArgumentChecks.IsNotNull(grantData, nameof(grantData));

            return(ExecuteNewRequest <AccessToken>(CreateUrl, Method.Post, request =>
            {
                input.AddAuthHeader(request);
                grantData.AddGrantData(request);
            }));
        }