/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { RegisterExternalPageParameters parameters = (RegisterExternalPageParameters)e.NavigationParameter; this.accessTokenSource = parameters.AccessTokenSource; this.externalLoginUri = parameters.ExternalLoginUri; UserInfo userInfo = parameters.UserInfo; string text = SuccessfulExternalLoginTextBlock.Text; SuccessfulExternalLoginTextBlock.Text = text.Substring(0, text.LastIndexOf(' ') + 1) + userInfo.LoginProvider + '.'; this.UsernameTextBox.Text = userInfo.UserName; }
private async void WebAccountProviderInvokedHandler(WebAccountProviderCommand command) { string externalLoginUri = command.WebAccountProvider.Id; ExternalLoginResult loginExternalResult = await ExternalLoginManager.GetExternalAccessTokenAsync(externalLoginUri); if (loginExternalResult.AccessToken != null) { // Save the access token so we can check if the user has registered AppSettings settings = new AppSettings(); settings.AccessToken = loginExternalResult.AccessToken; HttpResult <UserInfo> result; using (AccountClient accountClient = ClientFactory.CreateAccountClient()) { result = await accountClient.GetUserInfoAsync(); } if (result.Succeeded) { if (result.Content.HasRegistered) { accessTokenSource.TrySetResult(loginExternalResult.AccessToken); this.Frame.GoBack(); } else { RegisterExternalPageParameters parameters = new RegisterExternalPageParameters() { AccessTokenSource = accessTokenSource, ExternalLoginUri = externalLoginUri, UserInfo = result.Content }; this.Frame.Navigate(typeof(RegisterExternalPage), parameters); } } else { await ErrorDialog.ShowErrorsAsync("Failed to connected to external account.", result.Errors); } } else { await ErrorDialog.ShowErrorAsync("Failed to connected to external account."); } }
private async void WebAccountProviderInvokedHandler(WebAccountProviderCommand command) { string externalLoginUri = command.WebAccountProvider.Id; ExternalLoginResult loginExternalResult = await ExternalLoginManager.GetExternalAccessTokenAsync(externalLoginUri); if (loginExternalResult.AccessToken != null) { // Save the access token so we can check if the user has registered AppSettings settings = new AppSettings(); settings.AccessToken = loginExternalResult.AccessToken; HttpResult<UserInfo> result; using (AccountClient accountClient = ClientFactory.CreateAccountClient()) { result = await accountClient.GetUserInfoAsync(); } if (result.Succeeded) { if (result.Content.HasRegistered) { accessTokenSource.TrySetResult(loginExternalResult.AccessToken); this.Frame.GoBack(); } else { RegisterExternalPageParameters parameters = new RegisterExternalPageParameters() { AccessTokenSource = accessTokenSource, ExternalLoginUri = externalLoginUri, UserInfo = result.Content }; this.Frame.Navigate(typeof(RegisterExternalPage), parameters); } } else { await ErrorDialog.ShowErrorsAsync("Failed to connected to external account.", result.Errors); } } else { await ErrorDialog.ShowErrorAsync("Failed to connected to external account."); } }