Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }