Example #1
0
        public static async void SignIn(bool attempt_silent = true)
        {
            if (!XboxLiveObject.SubscribedToEvents)
            {
                XboxLiveUser.SignOutCompleted    += XboxLiveObject.OnSignOutCompleted;
                XboxLiveObject.SignInCompleted   += XboxLiveObject.OnSignInCompleted;
                XboxLiveObject.SubscribedToEvents = true;
            }

            if (XboxLiveObject.CurrentlyAttemptingSignIn)
            {
                return;
            }

            XboxLiveObject.CurrentlyAttemptingSignIn = true;
            var users = await User.FindAllAsync();

            try {
                XboxLiveObject.CurrentUser = new XboxLiveUser(users[0]);

                if (!XboxLiveObject.CurrentUser.IsSignedIn)
                {
                    CoreDispatcher core_dispatcher = null;
                    await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { core_dispatcher = Window.Current.CoreWindow.Dispatcher; });

                    if (attempt_silent)
                    {
                        try {
                            await XboxLiveObject.CurrentUser.SignInSilentlyAsync(core_dispatcher);
                        } catch {
                            Debug.WriteLine("SignInSilentlyAsync Threw Exception");
                        }
                    }

                    if (!XboxLiveObject.CurrentUser.IsSignedIn)
                    {
                        Debug.WriteLine("Silent Sign-In failed, requesting sign in");
                        try {
                            await XboxLiveObject.CurrentUser.SignInAsync(core_dispatcher);
                        } catch {
                            Debug.WriteLine("SingInAsync Threw Exception");
                        }
                    }
                }

                if (XboxLiveObject.CurrentUser.IsSignedIn)
                {
                    try {
                        XboxLiveObject.CurrentContext = new XboxLiveContext(XboxLiveObject.CurrentUser);
                    } catch {}

                    if (XboxLiveObject.IsReady)
                    {
                        XboxLiveObject.SignInCompleted?.Invoke(typeof(XboxLiveObject), new SignInCompletedEventArgs(XboxLiveObject.CurrentUser, XboxLiveObject.CurrentContext));
                    }
                }

                XboxLiveObject.WriteInfo();
            } catch {
                Debug.WriteLine("XboxLiveObject.SignIn() :: Unable to sign in for unknown reasons");
            }

            XboxLiveObject.CurrentlyAttemptingSignIn = false;
        }