public async void LoginWithXboxBroker_OnClick(object sender, RoutedEventArgs e) { AuthWaiting.Visibility = Visibility.Visible; // original bungie redirect url: ghost-overlay:///oauth-return var requestUri = new Uri(AppState.bungieApi.GetAuthorisationUrl()); var callbackUri = new Uri("https://destiny.report/ghost-auth-return"); XboxGameBarWebAuthenticationResult result; try { result = await gameBarWebAuth.AuthenticateAsync( XboxGameBarWebAuthenticationOptions.None, requestUri, callbackUri); } catch (Exception err) { Log.Error("Game Bar Auth Broker failed", err); _ = LoginWithDesktop(); return; } AuthWaiting.Visibility = Visibility.Collapsed; if (result.ResponseStatus == XboxGameBarWebAuthenticationStatus.Success) { Log.Error($"Auth broker has returned successfully with data {result.ResponseData}"); var responseUri = new Uri(result.ResponseData); var parsed = HttpUtility.ParseQueryString(responseUri.Query); var authCode = parsed["code"]; await AppState.bungieApi.GetOAuthAccessToken(authCode); Log.Info("New token data (its there, trust me)"); if (AppState.Data.TokenData.IsValid()) { this.Frame.Navigate(typeof(WidgetMainView), widget); } else { throw new Exception("Exchanged code for token, but the TokenData is not valid??"); } } else { BrowserLoginStack.Visibility = Visibility.Visible; } }
private async void AuthenticateAsync_Click(object sender, RoutedEventArgs e) { if (RequestUriBox.Text == "" || CallbackUriBox.Text == "") { return; } Uri requestUri = new Uri(RequestUriBox.Text); Uri callbackUri = new Uri(CallbackUriBox.Text); XboxGameBarWebAuthenticationResult result = await gameBarWebAuth.AuthenticateAsync( XboxGameBarWebAuthenticationOptions.None, requestUri, callbackUri); Debug.WriteLine("ResponseData: " + result.ResponseData); Debug.WriteLine("ResponseStatus: " + result.ResponseStatus.ToString()); Debug.WriteLine("ResponseErrorDetail: " + result.ResponseErrorDetail); }