public void NextButtonAction() { V1NativeAppUtil v1NativeAppUtil = new V1NativeAppUtil() { TenantName = textBox_TenantName.Text, ClientID = textBox_ClientID.Text, RedirectUri = textBox_RedirectUri.Text, Resource = Util.ConvertResourceNameToResourceEnum(comboBox_Resource.SelectedItem.ToString()) }; ValidateResult validateResult = v1NativeAppUtil.Validate(); if (validateResult.IsValid) { AcquireAccessTokenResult acquireAccessTokenResult = v1NativeAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { AccessTokenWizardForm wizard = (AccessTokenWizardForm)Parent; wizard.CloseWizard(new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Util.ConvertResourceNameToResourceEnum(comboBox_Resource.SelectedItem.ToString()), textBox_ClientID.Text, "", "", textBox_RedirectUri.Text)); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } }
private void button_Next_Click(object sender, EventArgs e) { ValidateResult validateResult; AcquireAccessTokenResult acquireAccessTokenResult; switch (currentPageIndex) { case PageIndex.Page00_PortalSelection: // Portal selection page if (radioButton_Page00_MicrosoftAzurePortal.Checked) { // V1 endpoint // Go to the next page. ShowPage(PageIndex.Page01_MicrosoftAzurePortalAppSelection); } else if (radioButton_Page00_AppRegistrationPortal.Checked) { // V2 endpoint // Go to the next page. ShowPage(PageIndex.Page02_AppRegistrationPortalAppSelection); } else if (radioButton_Page00_BuiltInAppOrBasicAuth.Checked) { // The user has no application // Go to the next page. // Create a return value and close this window. ShowPage(PageIndex.Page10_BuiltInAppOrBasicAuthSelection); } else { // The user has the SharePoint Online App-Only REST API // Microsoft Azure Access Control Service application. ShowPage(PageIndex.Page14_SharePointOnlineAppOnlyOptionForm); } break; case PageIndex.Page01_MicrosoftAzurePortalAppSelection: // App selection page for V1 auth endpoint. if (radioButton_Page01_V1Web.Checked) { // V1 endpoint Web App // Go to the next page. ShowPage(PageIndex.Page03_V1WebAppOptionForm); } else if (radioButton_Page01_V1Native.Checked) { // V1 endpoint Native App // Go to the next page. ShowPage(PageIndex.Page04_V1NativeAppOptionForm); } else if (radioButton_Page01_V1AppOnlyByCert.Checked) { // V1 endpoint Web App (App Only Token by certificate) // Go to the next page. ShowPage(PageIndex.Page05_V1AppOnlyByCertOptionForm); } else if (radioButton_Page01_V1AppOnlyByKey.Checked) { // V1 endpoint Web App (App Only Token by Key) // Go to the next page. ShowPage(PageIndex.Page08_V1AppOnlyByKeyOptionForm); } else { // V1 endpoint Admin Consent // Go to the next page. ShowPage(PageIndex.Page09_V1AdminConsentOptionForm); } break; case PageIndex.Page02_AppRegistrationPortalAppSelection: // App selection page for V2 auth endpoint. if (radioButton_Page02_V2Web.Checked) { // V2 endpoint Web App // Go to the next page. ShowPage(PageIndex.Page06_V2WebAppOptionForm); } else if (radioButton_Page02_V2Mobile.Checked) { // V2 endpoint Mobile App // Go to the next page. ShowPage(PageIndex.Page07_V2MobileAppOptionForm); } else if (radioButton_Page02_V2AdminConsent.Checked) { // V2 endpoint, but need admin consent // Go to the next page. ShowPage(PageIndex.Page13_V2AdminConsentOptionForm); } else if (radioButton_Page02_V2WebAppOnlyForMicrosoftGraph.Checked) { // V2 endpoint Web App (App Only Token by password for Microsoft Graph) // Go to the next page. ShowPage(PageIndex.Page12_V2AppOnlyByPasswordForMicrosoftGraphOptionForm); } break; case PageIndex.Page03_V1WebAppOptionForm: // Option form for V1 auth endpoint Web App V1WebAppUtil v1WebAppUtil = new V1WebAppUtil() { ClientID = textBox_Page03_ClientID.Text, RedirectUri = textBox_Page03_RedirectUri.Text, Resource = Util.ConvertResourceNameToResourceEnum(comboBox_Page03_Resource.SelectedItem.ToString()), ClientSecret = textBox_Page03_ClientSecret.Text }; validateResult = v1WebAppUtil.Validate(); if (validateResult.IsValid) { acquireAccessTokenResult = v1WebAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Util.ConvertResourceNameToResourceEnum(comboBox_Page03_Resource.SelectedItem.ToString()), textBox_Page03_ClientID.Text, textBox_Page03_ClientSecret.Text, "", textBox_Page03_RedirectUri.Text); DialogResult = DialogResult.OK; Close(); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } break; case PageIndex.Page04_V1NativeAppOptionForm: // Option form for V1 auth endpoint Native App V1NativeAppUtil v1NativeAppUtil = new V1NativeAppUtil() { TenantName = textBox_Page04_TenantName.Text, ClientID = textBox_Page04_ClientID.Text, RedirectUri = textBox_Page04_RedirectUri.Text, Resource = Util.ConvertResourceNameToResourceEnum(comboBox_Page04_Resource.SelectedItem.ToString()) }; validateResult = v1NativeAppUtil.Validate(); if (validateResult.IsValid) { acquireAccessTokenResult = v1NativeAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Util.ConvertResourceNameToResourceEnum(comboBox_Page04_Resource.SelectedItem.ToString()), textBox_Page04_ClientID.Text, "", "", textBox_Page04_RedirectUri.Text); DialogResult = DialogResult.OK; Close(); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } break; case PageIndex.Page05_V1AppOnlyByCertOptionForm: // Option form for V1 auth endpoint Web App App only token by certificate if (ValidateV1WebAppAppOnlyByCertParam()) { TokenResponse tokenResponse = AcquireV1WebAppAppOnlyAccessTokenByCert(); if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Util.ConvertResourceNameToResourceEnum(comboBox_Page05_Resource.SelectedItem.ToString()), textBox_Page05_ClientID.Text, "", "", ""); DialogResult = DialogResult.OK; Close(); } } break; case PageIndex.Page06_V2WebAppOptionForm: // Option form for V2 auth endpoint Web App V2WebAppUtil v2WebAppUtil = new V2WebAppUtil() { TenantName = textBox_Page06_TenantName.Text, ClientID = textBox_Page06_ClientID.Text, RedirectUri = textBox_Page06_RedirectUri.Text, Scopes = textBox_Page06_Scopes.Text, ClientSecret = textBox_Page06_ClientSecret.Text }; validateResult = v2WebAppUtil.Validate(); if (validateResult.IsValid) { acquireAccessTokenResult = v2WebAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV2, Resources.None, textBox_Page06_ClientID.Text, textBox_Page06_ClientSecret.Text, textBox_Page06_Scopes.Text, textBox_Page06_RedirectUri.Text, textBox_Page06_TenantName.Text); DialogResult = DialogResult.OK; Close(); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } break; case PageIndex.Page07_V2MobileAppOptionForm: // Option form for V2 auth endpoint Web App V2MobileAppUtil v2MobileAppUtil = new V2MobileAppUtil() { TenantName = textBox_Page07_TenantName.Text, ClientID = textBox_Page07_ClientID.Text, RedirectUri = textBox_Page07_RedirectUri.Text, Scopes = textBox_Page07_Scopes.Text }; validateResult = v2MobileAppUtil.Validate(); if (validateResult.IsValid) { acquireAccessTokenResult = v2MobileAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV2, Resources.None, textBox_Page07_ClientID.Text, "", textBox_Page07_Scopes.Text, textBox_Page07_RedirectUri.Text, textBox_Page07_TenantName.Text); DialogResult = DialogResult.OK; Close(); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } break; case PageIndex.Page08_V1AppOnlyByKeyOptionForm: // Option form for V1 auth endpoint Web App App only token by Key if (ValidateV1WebAppAppOnlyByKeyParam()) { TokenResponse tokenResponse = AcquireV1WebAppAppOnlyAccessTokenByKey(); if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Util.ConvertResourceNameToResourceEnum(comboBox_Page08_Resource.SelectedItem.ToString()), textBox_Page08_ClientID.Text, "", "", ""); DialogResult = DialogResult.OK; Close(); } } break; case PageIndex.Page09_V1AdminConsentOptionForm: // Option form for V1 Admin Consent if (ValidateV1AdminConsentParam()) { string authorizationCode = AcquireV1AdminConsentAuthorizationCode(); if (authorizationCode == "") { return; } SaveSettings(); MessageBox.Show("Admin Consent completed.", "Office365APIEditor"); } break; case PageIndex.Page10_BuiltInAppOrBasicAuthSelection: // Mode selection page for built-in app or basic auth. if (radioButton_Page10_BuiltInApp.Checked) { // Built-in app // Go to the next page. ShowPage(PageIndex.Page11_BuiltInAppOptionForm); } else { // Basic auth clientInfo = new ClientInformation(new TokenResponse(), AuthEndpoints.Basic, Resources.None, "", "", "", ""); DialogResult = DialogResult.OK; Close(); } break; case PageIndex.Page11_BuiltInAppOptionForm: // Option form for the built-in app. V2MobileAppUtil builtInAppUtil = new V2MobileAppUtil() { ClientID = Properties.Settings.Default.BuiltInAppClientId, RedirectUri = Properties.Settings.Default.BuiltInAppRedirectUri, Scopes = textBox_Page11_Scopes.Text, TenantName = "common" }; validateResult = builtInAppUtil.Validate(); if (validateResult.IsValid) { acquireAccessTokenResult = builtInAppUtil.AcquireAccessToken(); if (acquireAccessTokenResult.Success == InteractiveResult.Fail) { MessageBox.Show(acquireAccessTokenResult.ErrorMessage, "Office365APIEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (acquireAccessTokenResult.Success == InteractiveResult.Cancel) { return; } TokenResponse tokenResponse = acquireAccessTokenResult.Token; if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV2, Resources.None, Properties.Settings.Default.BuiltInAppClientId, "", textBox_Page11_Scopes.Text, Properties.Settings.Default.BuiltInAppRedirectUri); DialogResult = DialogResult.OK; Close(); } } else { MessageBox.Show(string.Join(Environment.NewLine, validateResult.ErrorMessage), "Office365APIEditor"); } break; case PageIndex.Page12_V2AppOnlyByPasswordForMicrosoftGraphOptionForm: // Option form for V2 auth endpoint Web App App only token by password for Microsoft Graph if (ValidateV2WebAppAppOnlyByPasswordForMicrosoftGraphParam()) { TokenResponse tokenResponse = AcquireV2WebAppAppOnlyAccessTokenByPasswordForMicrosoftGraph(); if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV2, Resources.Graph, textBox_Page12_ClientId.Text, textBox_Page12_ClientSecret.Text, textBox_Page12_Scopes.Text, ""); DialogResult = DialogResult.OK; Close(); } } break; case PageIndex.Page13_V2AdminConsentOptionForm: // Option form for V2 Admin Consent if (ValidateV2AdminConsentParam()) { string authorizationCode = AcquireV2AdminConsentAuthorizationCode(); if (authorizationCode == "") { return; } SaveSettings(); MessageBox.Show("Admin Consent completed.", "Office365APIEditor"); } break; case PageIndex.Page14_SharePointOnlineAppOnlyOptionForm: // Option form for the SharePoint Online App-Only REST API Microsoft Azure Access Control Service application. if (ValidateSharePointOnlineAppOnlyByKeyParam()) { TokenResponse tokenResponse = AcquireSharePointOnlineAppOnlyAccessTokenByKey(); if (tokenResponse != null) { SaveSettings(); // Create a return value and close this window. clientInfo = new ClientInformation(tokenResponse, AuthEndpoints.OAuthV1, Resources.None, textBox_Page14_ClientID.Text, "", "", ""); DialogResult = DialogResult.OK; Close(); } } break; case PageIndex.None: default: break; } button_Back.Enabled = true; }