using System.Threading.Tasks;
using System.Collections.Generic;
public class OAuthCodeFlow
const string GRANT_TYPE = "grant_type";
const string CLIENT_ID = "client_id";
const string REDIRECT_URI = "redirect_uri";
const string CODE = "code";
public static void Main(string[] args)
AccessTokenResponse tokenResponse = GetToken().Result;
var accessToken = tokenResponse.access_token;
var refreshToken = tokenResponse.refresh_token;
Console.WriteLine("Access Token : " + accessToken);
Console.WriteLine("Refresh Token : " + refreshToken);
UseToken(accessToken).Wait();
static async Task<AccessTokenResponse> GetToken()
using (var client = new HttpClient())
string grantType = "authorization_code";
string redirectUri = "{Redirect URI}";
string clientId = "{Client ID}";
string code = "{Auth Code}";
string baseUrl = "https://development.coadjute.com/{partnerName}/";
string tokenUrl = "token";
var formData = new[]{new KeyValuePair<string, string>(GRANT_TYPE, grantType), new KeyValuePair<string, string>(CLIENT_ID, clientId), new KeyValuePair<string, string>(REDIRECT_URI, redirectUri), new KeyValuePair<string, string>(CODE, code)};
HttpContent content = new FormUrlEncodedContent(formData);
var request = new HttpRequestMessage();
request.RequestUri = new Uri(baseUrl + tokenUrl);
request.Content = content;
request.Method = HttpMethod.Post;
HttpResponseMessage response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
var jsonString = response.Content.ReadAsStringAsync();
var tokenResponse = JsonConvert.DeserializeObject<AccessTokenResponse>(jsonString.Result);
static async Task UseToken(string accessToken)
using (var client = new HttpClient())
string baseUrl = "https://development.coadjute.com/{partnerName}/";
string tokenUrl = "employees";
client.DefaultRequestHeaders.Add("x-resource-version", "1.0.0");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
var request = new HttpRequestMessage();
request.RequestUri = new Uri(baseUrl + tokenUrl);
request.Method = HttpMethod.Get;
HttpResponseMessage response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
var jsonString = response.Content.ReadAsStringAsync();
Console.WriteLine("Employee Response : " + jsonString.Result);
public class AccessTokenResponse
public string access_token
public string refresh_token