public static async Task <TokenResponse> AcquireTokenAsync(AcquireTokenRequest request) { using (var httpClient = new HttpClient()) { var postBody = new Dictionary <string, string> { ["client_id"] = request.ClientId, ["grant_type"] = "authorization_code", ["scope"] = string.Join(" ", M365Helper.EmailScopes), ["code"] = request.ResponseCode, ["redirect_uri"] = request.RedirectUri, ["client_secret"] = request.Secret, ["code_verifier"] = request.CodeVerifier }; var httpRequest = new HttpRequestMessage(HttpMethod.Post, M365Helper.BuildTokenUri(request.Tenant)) { Content = new FormUrlEncodedContent(postBody) }; var httpResponse = await httpClient.SendAsync(httpRequest); string responseString = await httpResponse.Content.ReadAsStringAsync(); var tokenResponse = JsonSerializer.Deserialize <TokenResponse>(responseString); return(tokenResponse); } }
public static async Task <TokenResponse> RefreshTokenAsync(RefreshTokenRequest request) { using (var httpClient = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Post, M365Helper.BuildTokenUri(request.Tenant)) { Content = new FormUrlEncodedContent(new Dictionary <string, string> { ["client_id"] = request.ClientId, ["scope"] = string.Join(" ", request.Scopes), ["refresh_token"] = request.RefreshToken, ["grant_type"] = "refresh_token", ["client_secret"] = request.Secret }) }; var response = await httpClient.SendAsync(httpRequest); var content = await response.Content.ReadAsStringAsync(); var token = JsonSerializer.Deserialize <TokenResponse>(content); return(token); } }