public void buttonGetCredential_Click(object sender, EventArgs e) { labelAccessTokenData.Text = "Requesting token..."; try { AuthorizationToken result = GetOAuthToken.Program.RunAsync(textBoxTenantId.Text, textBoxClientId.Text, textBoxClientSecret.Text); labelExpiresInData.Text = result.Expires_In.ToString(); labelNotBeforeData.Text = result.Not_Before.ToString(); labelExpiresOnData.Text = result.Expires_On.ToString(); labelTokenTypeData.Text = result.Token_Type; labelAccessTokenData.Text = result.Access_Token; } catch (Exception err) { labelAccessTokenData.Text = err.Message; } }
static public AuthorizationToken RunAsync(string TenantId, string ClientId, string ClientSecret) { CredentialRequest credentialRequest = new CredentialRequest { TenantId = TenantId, ClientId = ClientId, ClientSecret = ClientSecret }; string uri = "https://login.microsoftonline.com/" + TenantId + "/oauth2/v2.0/token/"; HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.MaximumAutomaticRedirections = 4; webRequest.MaximumResponseHeadersLength = 4; var postData = "client_id=" + ClientId; postData += "&scope=https://graph.microsoft.com/.default"; postData += "&client_secret=" + ClientSecret; postData += "&grant_type=client_credentials"; var data = ASCIIEncoding.ASCII.GetBytes(postData); webRequest.ContentLength = data.Length; Stream sendStream = webRequest.GetRequestStream(); sendStream.Write(data, 0, data.Length); sendStream.Close(); HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); string result = readStream.ReadToEnd(); AuthorizationToken deserializedResult = JsonConvert.DeserializeObject <AuthorizationToken>(result); response.Close(); readStream.Close(); return(deserializedResult); }