static void Main(string[] args)
        {
            var dt = new DateTime(1498464308079);

            authenticationContext = new AuthenticationContext
                                        (String.Format(CultureInfo.InvariantCulture, aadInstance, tenant));
            authenticationContext.TokenCache.Clear();
            AuthenticationResult testCredentials = null;
            UserCredential       uc = null;

            uc = new UserPasswordCredential(hardcodedUsername, hardcodedPassword);
            testCredentials     = GetAzureAdToken(authenticationContext, sfboResourceAppId, clientId, redirectUri, uc);
            Accesstoken         = testCredentials.AccessToken;
            ucwaApplicationsUri = GetUcwaRootUri(authenticationContext, sfboResourceAppId, clientId, redirectUri, uc);

            ucwaApplicationsHost     = ReduceUriToProtoAndHost(ucwaApplicationsUri);
            ucwaAuthenticationResult = GetAzureAdToken(authenticationContext, ucwaApplicationsHost, clientId, redirectUri, uc);
            Accesstoken = ucwaAuthenticationResult.AccessToken;

            UcwaMyAppsObject ucwaMyAppsObject = new UcwaMyAppsObject()
            {
                UserAgent  = "Notification_App",
                EndpointId = Guid.NewGuid().ToString(),
                Culture    = "en-US"
            };

            Console.WriteLine("Making request to ucwaApplicationsUri " + ucwaApplicationsUri);
            createUcwaAppsResults = CreateUcwaApps(ucwaAuthenticationResult, ucwaApplicationsUri, ucwaMyAppsObject);

            SendIMToUser(); // send im to user
        }
        public static string CreateUcwaApps(HttpClient httpClient, AuthenticationResult ucwaAuthenticationResult, string ucwaApplicationsRootUri,
            UcwaMyAppsObject ucwaAppsObject)
        {
            string createUcwaAppsResults = string.Empty;

            httpClient.DefaultRequestHeaders.Clear();
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ucwaAuthenticationResult.AccessToken);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var createUcwaPostData = JsonConvert.SerializeObject(ucwaAppsObject);
            Console.WriteLine("CreateUcwaApps POST data is " + createUcwaPostData);
            var httpResponseMessage =
                httpClient.PostAsync(ucwaApplicationsRootUri, new StringContent(createUcwaPostData, Encoding.UTF8,
                "application/json")).Result;
            Console.WriteLine("CreateUcwaApps response is " + httpResponseMessage.Content.ReadAsStringAsync().Result);
            if (httpResponseMessage.IsSuccessStatusCode)
            {
                createUcwaAppsResults = httpResponseMessage.Content.ReadAsStringAsync().Result;
            }

            return createUcwaAppsResults;
        }
        public static string CreateUcwaApps(HttpClient httpClient, AuthenticationResult ucwaAuthenticationResult, string ucwaApplicationsRootUri,
                                            UcwaMyAppsObject ucwaAppsObject)
        {
            string createUcwaAppsResults = string.Empty;

            httpClient.DefaultRequestHeaders.Clear();
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ucwaAuthenticationResult.AccessToken);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var createUcwaPostData = JsonConvert.SerializeObject(ucwaAppsObject);

            Console.WriteLine("CreateUcwaApps POST data is " + createUcwaPostData);
            var httpResponseMessage =
                httpClient.PostAsync(ucwaApplicationsRootUri, new StringContent(createUcwaPostData, Encoding.UTF8,
                                                                                "application/json")).Result;

            Console.WriteLine("CreateUcwaApps response is " + httpResponseMessage.Content.ReadAsStringAsync().Result);
            if (httpResponseMessage.IsSuccessStatusCode)
            {
                createUcwaAppsResults = httpResponseMessage.Content.ReadAsStringAsync().Result;
                ApplicationRoot obj = new ApplicationRoot();
                JsonConvert.PopulateObject(createUcwaAppsResults, obj);
                if (obj != null)
                {
                    ConfigData.ucwaApplication = obj._links.self.href;
                    // ConfigData.ucwaApplications += ConfigData.ucwaApplication;
                    ConfigData.ucwaEvents = obj._links.events.href;
                }
                //        switch (xml02.GetAttribute("rel"))
                //        case "application":ucwaApplication
                //        case "me": ConfigData.ucwaMe));
                //        case "events":ConfigData.ucwaEvents));
                //        case "makeMeAvailable":ConfigData.ucwaMakeMeAvailable));
                //        case "startMessaging":ConfigData.ucwaMessagingInvitations));
                //        case "startPhoneAudio": ConfigData.ucwaStartPhoneAudio));
            }
            return(createUcwaAppsResults);
        }
        public static string CreateUcwaApps(HttpClient httpClient, AuthenticationResult ucwaAuthenticationResult, string ucwaApplicationsRootUri,
                                            UcwaMyAppsObject ucwaAppsObject)
        {
            string createUcwaAppsResults = string.Empty;

            httpClient.DefaultRequestHeaders.Clear();
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ucwaAuthenticationResult.AccessToken);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var createUcwaPostData = JsonConvert.SerializeObject(ucwaAppsObject);

            Console.WriteLine("CreateUcwaApps POST data is " + createUcwaPostData);
            var httpResponseMessage =
                httpClient.PostAsync(ucwaApplicationsRootUri, new StringContent(createUcwaPostData, Encoding.UTF8,
                                                                                "application/json")).Result;

            Console.WriteLine("CreateUcwaApps response is " + httpResponseMessage.Content.ReadAsStringAsync().Result);
            if (httpResponseMessage.IsSuccessStatusCode)
            {
                createUcwaAppsResults = httpResponseMessage.Content.ReadAsStringAsync().Result;
            }

            return(createUcwaAppsResults);
        }
Example #5
0
        // Login to the user's account and create a UCWA app

        async static void Login(bool IsAuto = false)
        {
            // Clear any cached tokens.
            // We do this to ensure logins with different accounts work
            // during the same launch of the app

            authenticationContext.TokenCache.Clear();
            string loginStyle = "console";

            Console.WriteLine("How do you want to login?");

            Console.WriteLine("console | dialog | code >");
            if (!IsAuto)
            {
                loginStyle = Console.ReadLine();
            }

            AuthenticationResult testCredentials = null;
            UserCredential       uc = null;

            switch (loginStyle.ToLower())
            {
            case "console":
                uc = GetUserCredentials();
                testCredentials = UcwaSfbo.AzureAdAuth.GetAzureAdToken(authenticationContext, sfboResourceAppId, clientId, redirectUri, uc);
                break;

            case "dialog":
                if (redirectUri == String.Empty)
                {
                    Console.WriteLine("You haven't defined redirectUri which is needed if you want to sign in with a dialog");
                    return;
                }
                testCredentials = UcwaSfbo.AzureAdAuth.GetAzureAdToken(authenticationContext, sfboResourceAppId, clientId, redirectUri, uc);
                break;

            case "code":
                DeviceCodeResult deviceCodeResult = authenticationContext.AcquireDeviceCodeAsync(sfboResourceAppId, clientId).Result;
                Console.WriteLine(deviceCodeResult.Message);
                Console.WriteLine("Or, use Control-C to exit the app");
                testCredentials = authenticationContext.AcquireTokenByDeviceCodeAsync(deviceCodeResult).Result;
                break;

            default:
                Console.Write("Please select a login style and try again");
                Console.Write("\n");
                return;
            }

            if (testCredentials == null)
            {
                Console.WriteLine("We encountered an Azure AD error");
                Console.WriteLine("Check your tenant, clientID, and credentials");
                return;
            }
            ucwaApplicationsUri = UcwaAutodiscovery.GetUcwaRootUri(httpClient, authenticationContext, sfboResourceAppId, clientId, redirectUri, uc);

            Console.WriteLine("We'll store the base UCWA app URI for use with UCWA app calls");
            Console.WriteLine("We prefix this to the links returned from the UCWA apps POST");
            Console.WriteLine("Since these links aren't full URIs");
            ucwaApplicationsHost            = Utilities.ReduceUriToProtoAndHost(ucwaApplicationsUri);
            ConfigData.ucwaApplicationsHost = ucwaApplicationsHost;
            Console.WriteLine("ucwaApplicationsHost is " + ucwaApplicationsHost);

            Console.WriteLine("Get a token to access the user's UCWA Applications Resources from Azure AD.");
            Console.WriteLine("We can re-use this token for each UCWA app call");
            ucwaAuthenticationResult = AzureAdAuth.GetAzureAdToken(authenticationContext, ucwaApplicationsHost, clientId, redirectUri, uc);

            Console.WriteLine("Now we'll create and/or query UCWA Apps via POST");
            Console.WriteLine("Well create a UCWA apps object to pass to CreateUcwaApps");

            List <string> Modalities = new List <string>();

            Modalities.Add("PhoneAudio");
            Modalities.Add("Messaging");

            UcwaMyAppsObject ucwaMyAppsObject = new UcwaMyAppsObject()
            {
                UserAgent  = "myAgent1",
                EndpointId = Guid.NewGuid().ToString(),
                Culture    = "en-US"
            };

            Console.WriteLine("Making request to ucwaApplicationsUri " + ucwaApplicationsUri);
            createUcwaAppsResults = CreateUcwaApps(httpClient, ucwaAuthenticationResult, ucwaApplicationsUri, ucwaMyAppsObject);

            return;
        }