/// <summary> /// Called when a page becomes the active page in a frame. /// </summary> /// <param name="e"> /// An object that contains the event data. /// </param> protected override void OnNavigatedTo(NavigationEventArgs e) { if (this.NavigationContext.QueryString.TryGetValue("redirect_uri", out this.redirectUri)) { if (!this.redirectUri.ToLower().StartsWith("msft-")) { var loginResponse = new LoginResponse { ErrorCode = "2001", ErrorReason = "Calling app's URI is invalid", Error = "Invalid calling app URI", ErrorDescription = "Calling app's URI needs to start 'msft-'" }; this.LaunchCallingApp(loginResponse); } } base.OnNavigatedTo(e); }
/// <summary> /// The access denied button_ on click. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void AccessDeniedButton_OnClick(object sender, RoutedEventArgs e) { var loginResponse = new LoginResponse { ErrorCode = "200", Error = "access_denied", ErrorDescription = "Permissions error", ErrorReason = "user_denied" }; this.LaunchCallingApp(loginResponse); }
/// <summary> /// The success button_ on click. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void SuccessButton_OnClick(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(this.AccessTokenBox.Text)) { this.NoAccessTokenResponse(); return; } var loginResponse = new LoginResponse { AccessToken = this.AccessTokenBox.Text, ExpiresIn = this.AccessTokenExpiresInBox.Text }; this.LaunchCallingApp(loginResponse); }
/// <summary> /// No access token response. /// </summary> private void NoAccessTokenResponse() { var loginResponse = new LoginResponse { ErrorCode = "2003", ErrorDescription = "No access token provided in the login simulator", Error = "No access token provided in the login simulator", ErrorReason = "No access token provided in the login simulator" }; this.LaunchCallingApp(loginResponse); }
/// <summary> /// The no network button_ on click. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void NoNetworkButton_OnClick(object sender, RoutedEventArgs e) { var loginResponse = new LoginResponse { ErrorCode = "2002", ErrorReason = "No connection to facebook", Error = "Connection failed", ErrorDescription = "Unable to communicate with facebook in order to get the access token" }; this.LaunchCallingApp(loginResponse); }
/// <summary> /// Launches the calling app. /// </summary> /// <param name="loginResponse"> /// The login response. /// </param> private async void LaunchCallingApp(LoginResponse loginResponse) { if (string.IsNullOrEmpty(this.redirectUri)) { MessageBox.Show("No redirect uri provided"); return; } string uri = string.Format(CallbackUriFormat, this.redirectUri, loginResponse.ToString()); Debug.WriteLine("Final Redirect URI: " + uri); await Launcher.LaunchUriAsync(new Uri(uri, UriKind.Absolute)); Application.Current.Terminate(); }