コード例 #1
0
        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);
        }
コード例 #2
0
        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 = await gameBarWebAuth.AuthenticateAsync(
                XboxGameBarWebAuthenticationOptions.None,
                requestUri,
                callbackUri);

            AuthWaiting.Visibility = Visibility.Collapsed;

            if (result.ResponseStatus == XboxGameBarWebAuthenticationStatus.Success)
            {
                Debug.WriteLine($"Auth has returned successfully with data {result.ResponseData}");

                var responseUri = new Uri(result.ResponseData);
                var parsed      = HttpUtility.ParseQueryString(responseUri.Query);
                var authCode    = parsed["code"];

                Debug.WriteLine($"authCode: {authCode}");

                await AppState.bungieApi.GetOAuthAccessToken(authCode);

                Debug.WriteLine($"New token data: {AppState.Data.TokenData}");

                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;
            }
        }