コード例 #1
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            string             authmode           = "";
            string             appsecret          = "";
            string             email              = "";
            string             validationmode     = "";
            AuthValidationMode authValidationMode = AuthValidationMode.Graceful;

            if (NavigationContext.QueryString.TryGetValue("authmode", out authmode))
            {
                this.VM.AuthMode = (AuthenticationMode)Enum.Parse(typeof(AuthenticationMode), authmode);
            }
            if (NavigationContext.QueryString.TryGetValue("appsecret", out appsecret))
            {
                this.VM.AppSecret = appsecret;
            }
            if (NavigationContext.QueryString.TryGetValue("email", out email))
            {
                this.VM.Email = email;
            }
            if (NavigationContext.QueryString.TryGetValue("validationmode", out validationmode))
            {
                authValidationMode = (AuthValidationMode)Enum.Parse(typeof(AuthValidationMode), validationmode);
            }
            base.OnNavigatedTo(e);

            CheckForExistingLoginAsync(authValidationMode, this.VM.AuthMode);
        }
コード例 #2
0
 protected void ShowLoginScreen(AuthenticationMode authMode, string appSecret, string email, AuthValidationMode authValidationMode)
 {
     dynamic parms = new DynamicNavigationParameters();
     parms.authmode = authMode;
     parms.appsecret = appSecret;
     parms.email = email;
     parms.validationmode = authValidationMode;
     this.Frame.Navigate(typeof(LoginPage), parms);
 }
コード例 #3
0
 internal async void OnOpened(AuthenticationMode authmode, AuthValidationMode validationMode)
 {
     VM.IsBusy = true;
     if (await AuthManager.Current.CheckAndHandleExistingTokenAsync(authmode, validationMode))
     {
         this.CloseRequested(this, EventArgs.Empty);
     }
     VM.IsBusy = false;
 }
コード例 #4
0
 internal async void OnOpened(AuthenticationMode authmode, AuthValidationMode validationMode)
 {
     VM.IsBusy = true;
     if (await AuthManager.Current.CheckAndHandleExistingTokenAsync(authmode, validationMode))
     {
         this.CloseRequested(this, EventArgs.Empty);
     }
     VM.IsBusy = false;
 }
コード例 #5
0
        protected async void CheckForExistingLoginAsync(AuthValidationMode authValidationMode, AuthenticationMode authMode)
        {
            string serializedAuthStatus = AuthManager.Instance.RetrieveProtectedString(Constants.AuthStatusKey);

            if (!String.IsNullOrEmpty(serializedAuthStatus))
            {
                var aS = AuthStatus.DeserializeFromString(serializedAuthStatus);
                //consider that a change in Authmode is possible between versions of an app, so check if the saved token may be trusted
                if (AuthenticationMode.Authorize.Equals(authMode) && !aS.IsAuthorized || AuthenticationMode.Identify.Equals(authMode) && aS.IsAuthorized)
                {
                    return;
                }

                if (NetworkInterface.GetIsNetworkAvailable())
                {
                    this.VM.IsShowOverlay = true;
                    try
                    {
                        SystemTray.ProgressIndicator.IsVisible = true;
                        if (await aS.CheckIfStillValidAsync())
                        {
                            AuthManager.Instance.CurrentAuthStatus = aS;
                            NavigationService.Navigate(AuthManager.Instance.SuccessRedirect);
                        }
                        else
                        {
                            Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNoMemberError); });
                        }
                    }
                    catch (WebTransferException)
                    {
                        if (AuthValidationMode.Graceful.Equals(authValidationMode))
                        {
                            NavigationService.Navigate(AuthManager.Instance.SuccessRedirect);
                        }
                        else
                        {
                            Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNetworkError); });
                        }
                    }
                    finally
                    {
                        SystemTray.ProgressIndicator.IsVisible = false;
                        this.VM.IsShowOverlay = false;
                    }
                }
                else
                {
                    if (AuthValidationMode.Graceful.Equals(authValidationMode))
                    {
                        NavigationService.Navigate(AuthManager.Instance.SuccessRedirect);
                    }
                    Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNetworkError); });
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Identify user with hockeaypp auth. Opening a login page to require valid email address for app if needed
        /// </summary>
        /// <param name="this"></param>
        /// <param name="appSecret">Your app's app secret (see HockeyApp app page)</param>
        /// <param name="successRedirect">Page-URI to redirect to after successful login</param>
        /// <param name="navigationService">[optional] obsolete - not needed</param>
        /// <param name="eMail">[Optional] initial email</param>
        /// <param name="tokenValidationPolicy"><see cref="TokenValidationPolicy"/></param>
        /// <param name="authValidationMode"><see cref="AuthValidationMode"/></param>
        public static void IdentifyUser(this IHockeyClient @this, string appSecret,
            Uri successRedirect, NavigationService navigationService = null,
            string eMail = null,
            TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin,
            AuthValidationMode authValidationMode = AuthValidationMode.Graceful)

        {
            @this.AsInternal().CheckForInitialization();
            AuthManager.Instance.AuthenticateUser(successRedirect, AuthenticationMode.Identify, 
                tokenValidationPolicy, authValidationMode, eMail, appSecret);
        }
 /// <summary>
 /// Inititate user identification and define a action to perform when authorization is successfull
 /// </summary>
 /// <param name="this">The this.</param>
 /// <param name="appSecret">The application secret from HockeyApp.</param>
 /// <param name="successAction">Action to perform when login is successfull</param>
 /// <param name="eMail">[Optional] E-Mail adress to prefill form</param>
 /// <param name="tokenValidationPolicy">[Optional] Default is EveryLogin</param>
 /// <param name="authValidationMode">[Optional] Default is Graceful</param>
 public static void IdentifyUser(this IHockeyClient @this, string appSecret,
     Action successAction, string eMail = null,
     TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin,
     AuthValidationMode authValidationMode = AuthValidationMode.Graceful)
 {
     @this.AsInternal().CheckForInitialization();
     var authMan = AuthManager.Current;
     authMan.SuccessAction = successAction;
     authMan.AuthenticateUser(AuthenticationMode.Identify,
         tokenValidationPolicy, authValidationMode, eMail, appSecret);
 }
        /// <summary>
        /// Inititate user identification and define a action to perform when authorization is successfull
        /// </summary>
        /// <param name="this">The this.</param>
        /// <param name="appSecret">The application secret from HockeyApp.</param>
        /// <param name="successAction">Action to perform when login is successfull</param>
        /// <param name="eMail">[Optional] E-Mail adress to prefill form</param>
        /// <param name="tokenValidationPolicy">[Optional] Default is EveryLogin</param>
        /// <param name="authValidationMode">[Optional] Default is Graceful</param>
        public static void IdentifyUser(this IHockeyClient @this, string appSecret,
                                        Action successAction, string eMail          = null,
                                        TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin,
                                        AuthValidationMode authValidationMode       = AuthValidationMode.Graceful)
        {
            @this.AsInternal().CheckForInitialization();
            var authMan = AuthManager.Current;

            authMan.SuccessAction = successAction;
            authMan.AuthenticateUser(AuthenticationMode.Identify,
                                     tokenValidationPolicy, authValidationMode, eMail, appSecret);
        }
        /// <summary>
        /// Inititate user authorization and define a page navigate to when authorization is successfull
        /// </summary>
        /// <param name="this"></param>
        /// <param name="pageTypeForSuccessRedirect">Pagetype to navigate when login is successfull</param>
        /// <param name="eMail">[Optional] E-Mail adress to prefill form</param>
        /// <param name="tokenValidationPolicy">[Optional] Default is EveryLogin</param>
        /// <param name="authValidationMode">[Optional] Default is Graceful</param>
        public static void AuthorizeUser(this IHockeyClient @this,
                                         Type pageTypeForSuccessRedirect, string eMail = null,
                                         TokenValidationPolicy tokenValidationPolicy   = TokenValidationPolicy.EveryLogin,
                                         AuthValidationMode authValidationMode         = AuthValidationMode.Graceful)
        {
            @this.AsInternal().CheckForInitialization();
            var authMan = AuthManager.Current;

            authMan.SuccessRedirectPageType = pageTypeForSuccessRedirect;
            AuthManager.Current.AuthenticateUser(AuthenticationMode.Authorize,
                                                 tokenValidationPolicy, authValidationMode, eMail, null);
        }
コード例 #10
0
        protected void ShowLoginScreen(AuthenticationMode authMode, string appSecret, string email, AuthValidationMode authValidationMode)
        {
            var vm = new LoginVM();
            vm.AuthMode = authMode;
            vm.Email = email;
            vm.AppSecret = appSecret;

            var dialog = new LoginDialog();
            dialog.DataContext = vm;
            dialog.CloseRequested += Dialog_CloseRequested;
            authPopup = new Popup();
            authPopup.Child = dialog;
            authPopup.IsOpen = true;
            dialog.OnOpened(authMode, authValidationMode);
        }
コード例 #11
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            dynamic pars = e.Parameter as DynamicNavigationParameters ?? new DynamicNavigationParameters();

            this.VM.AuthMode  = (AuthenticationMode?)pars.authmode ?? AuthenticationMode.Authorize;
            this.VM.AppSecret = (String)pars.appsecret ?? "";
            this.VM.Email     = (String)pars.email ?? "";
            AuthValidationMode authValidationMode = (AuthValidationMode?)pars.validationmode ?? AuthValidationMode.Graceful;

            this.VM.IsBusy = true;
            await AuthManager.Current.CheckAndHandleExistingTokenAsync(this.VM.AuthMode, authValidationMode);

            this.VM.IsBusy = false;
        }
コード例 #12
0
        internal void AuthenticateUser(AuthenticationMode authMode = AuthenticationMode.Authorize,
            TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin, AuthValidationMode authValidationMode = AuthValidationMode.Graceful,
            string email = null, string appSecret = null)
        {
            if (AuthenticationMode.Identify.Equals(authMode) && String.IsNullOrEmpty(appSecret))
            {
                throw new Exception("Internal error: AppSecret must be provided when Identify function is used"); //ResourceManager.Current.MainResourceMap
            }
            bool needsLogin = TokenValidationPolicy.EveryLogin.Equals(tokenValidationPolicy);

            if(!needsLogin && TokenValidationPolicy.OnNewVersion.Equals(tokenValidationPolicy)) {
                string lastAuthorizedVersion = HockeyClient.Current.AsInternal().PlatformHelper.GetSettingValue(ConstantsUniversal.AuthLastAuthorizedVersionKey);
                needsLogin = (lastAuthorizedVersion == null) || (new Version(lastAuthorizedVersion) < new Version(HockeyClient.Current.AsInternal().VersionInfo));
            }

            if (needsLogin)
            {
                this.ShowLoginScreen(authMode, appSecret, email, authValidationMode);
            }
            else
            {
                this.ExecuteSuccessRedirectOrAction();
            }
        }
コード例 #13
0
        protected void ShowLoginScreen(AuthenticationMode authMode, string appSecret, string email, AuthValidationMode authValidationMode)
        {
            dynamic parms = new DynamicNavigationParameters();

            parms.authmode       = authMode;
            parms.appsecret      = appSecret;
            parms.email          = email;
            parms.validationmode = authValidationMode;
            this.Frame.Navigate(typeof(LoginPage), parms);
        }
コード例 #14
0
        internal void AuthenticateUser(Uri successRedirect, AuthenticationMode authMode = AuthenticationMode.Authorize,
            TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin, AuthValidationMode authValidationMode = AuthValidationMode.Graceful,
            string email = null, string appSecret = null)
        {
            if (AuthenticationMode.Identify.Equals(authMode) && String.IsNullOrEmpty(appSecret))
            {
                throw new ApplicationException(LocalizedStrings.LocalizedResources.Authentication_AppSecretMissing);
            }
            this.SuccessRedirect = successRedirect;

            bool needsLogin = TokenValidationPolicy.EveryLogin.Equals(tokenValidationPolicy);

            if (!needsLogin && TokenValidationPolicy.OnNewVersion.Equals(tokenValidationPolicy))
            {
                string lastAuthorizedVersion = IsolatedStorageSettings.ApplicationSettings.GetValue(Constants.AuthLastAuthorizedVersionKey) as String;
                needsLogin = (lastAuthorizedVersion == null) || (new Version(lastAuthorizedVersion) < new Version(ManifestHelper.GetAppVersion()));
            }

            if (needsLogin)
            {
                ((PhoneApplicationFrame)Application.Current.RootVisual).Navigate(new Uri("/HockeyApp;component/Views/LoginPage.xaml?authmode=" + HttpUtility.UrlEncode(authMode.ToString())
                                                                + "&appsecret=" + HttpUtility.UrlEncode(appSecret)
                                                                + "&email=" + HttpUtility.UrlEncode(email ?? "")
                                                                + "&validationmode=" + HttpUtility.UrlEncode(authValidationMode.ToString() ?? ""), UriKind.Relative));
            }
            else
            {
                ((PhoneApplicationFrame)Application.Current.RootVisual).Navigate(successRedirect);
            }
        }
コード例 #15
0
        protected void ShowLoginScreen(AuthenticationMode authMode, string appSecret, string email, AuthValidationMode authValidationMode)
        {
            var vm = new LoginVM();

            vm.AuthMode  = authMode;
            vm.Email     = email;
            vm.AppSecret = appSecret;

            var dialog = new LoginDialog();

            dialog.DataContext     = vm;
            dialog.CloseRequested += Dialog_CloseRequested;
            authPopup              = new Popup();
            authPopup.Child        = dialog;
            authPopup.IsOpen       = true;
            dialog.OnOpened(authMode, authValidationMode);
        }
コード例 #16
0
        internal void AuthenticateUser(Uri successRedirect, AuthenticationMode authMode = AuthenticationMode.Authorize,
                                       TokenValidationPolicy tokenValidationPolicy      = TokenValidationPolicy.EveryLogin, AuthValidationMode authValidationMode = AuthValidationMode.Graceful,
                                       string email = null, string appSecret = null)
        {
            if (AuthenticationMode.Identify.Equals(authMode) && String.IsNullOrEmpty(appSecret))
            {
                throw new ApplicationException(LocalizedStrings.LocalizedResources.Authentication_AppSecretMissing);
            }
            this.SuccessRedirect = successRedirect;

            bool needsLogin = TokenValidationPolicy.EveryLogin.Equals(tokenValidationPolicy);

            if (!needsLogin && TokenValidationPolicy.OnNewVersion.Equals(tokenValidationPolicy))
            {
                string lastAuthorizedVersion = IsolatedStorageSettings.ApplicationSettings.GetValue(Constants.AuthLastAuthorizedVersionKey) as String;
                needsLogin = (lastAuthorizedVersion == null) || (new Version(lastAuthorizedVersion) < new Version(ManifestHelper.GetAppVersion()));
            }

            if (needsLogin)
            {
                ((PhoneApplicationFrame)Application.Current.RootVisual).Navigate(new Uri("/HockeyApp;component/Views/LoginPage.xaml?authmode=" + HttpUtility.UrlEncode(authMode.ToString())
                                                                                         + "&appsecret=" + HttpUtility.UrlEncode(appSecret)
                                                                                         + "&email=" + HttpUtility.UrlEncode(email ?? "")
                                                                                         + "&validationmode=" + HttpUtility.UrlEncode(authValidationMode.ToString() ?? ""), UriKind.Relative));
            }
            else
            {
                ((PhoneApplicationFrame)Application.Current.RootVisual).Navigate(successRedirect);
            }
        }
コード例 #17
0
        protected async void CheckForExistingLoginAsync(AuthValidationMode authValidationMode, AuthenticationMode authMode)
        {
            string serializedAuthStatus = AuthManager.Instance.RetrieveProtectedString(Constants.AuthStatusKey);
            if (!String.IsNullOrEmpty(serializedAuthStatus))
            {
                var aS = AuthStatus.DeserializeFromString(serializedAuthStatus);
                //consider that a change in Authmode is possible between versions of an app, so check if the saved token may be trusted
                if (AuthenticationMode.Authorize.Equals(authMode) && !aS.IsAuthorized || AuthenticationMode.Identify.Equals(authMode) && aS.IsAuthorized)
                {
                    return;
                }

                if (NetworkInterface.GetIsNetworkAvailable())
                {
                    this.VM.IsShowOverlay = true;
                    try
                    {
                        SystemTray.ProgressIndicator.IsVisible = true;
                        if (await aS.CheckIfStillValidAsync())
                        {
                            AuthManager.Instance.CurrentAuthStatus = aS;
                            NavigationService.Navigate(AuthManager.Instance.SuccessRedirect);
                        }
                        else
                        {
                            Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNoMemberError); });
                        }
                    }
                    catch (WebTransferException)
                    {
                        
                        if (AuthValidationMode.Graceful.Equals(authValidationMode))
                        {
                            NavigationService.Navigate(AuthManager.Instance.SuccessRedirect); 
                        }
                        else
                        {
                            Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNetworkError); });
                        }
                    }
                    finally
                    {
                        SystemTray.ProgressIndicator.IsVisible = false;
                        this.VM.IsShowOverlay = false;
                    }
                }
                else
                {
                    if (AuthValidationMode.Graceful.Equals(authValidationMode))
                    {
                        NavigationService.Navigate(AuthManager.Instance.SuccessRedirect);
                    }
                    Dispatcher.BeginInvoke(() => { MessageBox.Show(LocalizedStrings.LocalizedResources.AuthNetworkError); });
                }
            }
        }
 /// <summary>
 /// Inititate user authorization and define a page navigate to when authorization is successfull
 /// </summary>
 /// <param name="this"></param>
 /// <param name="pageTypeForSuccessRedirect">Pagetype to navigate when login is successfull</param>
 /// <param name="eMail">[Optional] E-Mail adress to prefill form</param>
 /// <param name="tokenValidationPolicy">[Optional] Default is EveryLogin</param>
 /// <param name="authValidationMode">[Optional] Default is Graceful</param>
 public static void AuthorizeUser(this IHockeyClient @this,
    Type pageTypeForSuccessRedirect, string eMail = null,
    TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin,
    AuthValidationMode authValidationMode = AuthValidationMode.Graceful)
 {
     @this.AsInternal().CheckForInitialization();
     var authMan = AuthManager.Current;
     authMan.SuccessRedirectPageType = pageTypeForSuccessRedirect;
     AuthManager.Current.AuthenticateUser(AuthenticationMode.Authorize,
         tokenValidationPolicy, authValidationMode, eMail, null);
 }
コード例 #19
0
        //;

        internal async Task<bool> CheckAndHandleExistingTokenAsync(AuthenticationMode authMode, AuthValidationMode validationMode)
        {

            string serializedAuthStatus = await RetrieveProtectedStringAsync(ConstantsUniversal.AuthStatusKey);
            if (!String.IsNullOrEmpty(serializedAuthStatus))
            {
                var aS = AuthStatus.DeserializeFromString(serializedAuthStatus);
                //consider that a change in Authmode is possible between versions of an app, so check if the saved token may be trusted
                if (AuthenticationMode.Authorize.Equals(authMode) && !aS.IsAuthorized || AuthenticationMode.Identify.Equals(authMode) && aS.IsAuthorized)
                {
                    return false;
                }
                else if (NetworkInterface.GetIsNetworkAvailable())
                {
                    Exception error = null;
                    try
                    {
                        if (await aS.CheckIfStillValidAsync())
                        {
                            _authStatus = aS;
                            ExecuteSuccessRedirectOrAction();
                            return true;
                        }
                    }
                    catch (WebTransferException e)
                    {
                        HockeyClient.Current.AsInternal().HandleInternalUnhandledException(e);
                        error = e;
                    }
                    if (error != null)
                    {
                        if (AuthValidationMode.Graceful.Equals(validationMode))
                        {
                            _authStatus = aS;
                            ExecuteSuccessRedirectOrAction();
                            return true;
                        }
                        else
                        {
                            await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
                            {
                                await new MessageDialog(LocalizedStrings.LocalizedResources.AuthNetworkError).ShowAsync();
                            });
                        }
                    }
                }
                else
                {
                    if (AuthValidationMode.Graceful.Equals(validationMode))
                    {
                        ExecuteSuccessRedirectOrAction();
                        return true;
                    }
                    else
                    {
                        await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
                        {
                            await new MessageDialog(LocalizedStrings.LocalizedResources.AuthNetworkError).ShowAsync();
                        });
                    }
                }
            }
            return false;
        }
コード例 #20
0
        //;

        internal async Task <bool> CheckAndHandleExistingTokenAsync(AuthenticationMode authMode, AuthValidationMode validationMode)
        {
            string serializedAuthStatus = await RetrieveProtectedStringAsync(ConstantsUniversal.AuthStatusKey);

            if (!String.IsNullOrEmpty(serializedAuthStatus))
            {
                var aS = AuthStatus.DeserializeFromString(serializedAuthStatus);
                //consider that a change in Authmode is possible between versions of an app, so check if the saved token may be trusted
                if (AuthenticationMode.Authorize.Equals(authMode) && !aS.IsAuthorized || AuthenticationMode.Identify.Equals(authMode) && aS.IsAuthorized)
                {
                    return(false);
                }
                else if (NetworkInterface.GetIsNetworkAvailable())
                {
                    Exception error = null;
                    try
                    {
                        if (await aS.CheckIfStillValidAsync())
                        {
                            _authStatus = aS;
                            ExecuteSuccessRedirectOrAction();
                            return(true);
                        }
                    }
                    catch (WebTransferException e)
                    {
                        HockeyClient.Current.AsInternal().HandleInternalUnhandledException(e);
                        error = e;
                    }
                    if (error != null)
                    {
                        if (AuthValidationMode.Graceful.Equals(validationMode))
                        {
                            _authStatus = aS;
                            ExecuteSuccessRedirectOrAction();
                            return(true);
                        }
                        else
                        {
                            await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                            {
                                await new MessageDialog(LocalizedStrings.LocalizedResources.AuthNetworkError).ShowAsync();
                            });
                        }
                    }
                }
                else
                {
                    if (AuthValidationMode.Graceful.Equals(validationMode))
                    {
                        ExecuteSuccessRedirectOrAction();
                        return(true);
                    }
                    else
                    {
                        await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                        {
                            await new MessageDialog(LocalizedStrings.LocalizedResources.AuthNetworkError).ShowAsync();
                        });
                    }
                }
            }
            return(false);
        }
コード例 #21
0
        internal void AuthenticateUser(AuthenticationMode authMode = AuthenticationMode.Authorize,
                                       TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin, AuthValidationMode authValidationMode = AuthValidationMode.Graceful,
                                       string email = null, string appSecret = null)
        {
            if (AuthenticationMode.Identify.Equals(authMode) && String.IsNullOrEmpty(appSecret))
            {
                throw new Exception("Internal error: AppSecret must be provided when Identify function is used"); //ResourceManager.Current.MainResourceMap
            }
            bool needsLogin = TokenValidationPolicy.EveryLogin.Equals(tokenValidationPolicy);

            if (!needsLogin && TokenValidationPolicy.OnNewVersion.Equals(tokenValidationPolicy))
            {
                string lastAuthorizedVersion = HockeyClient.Current.AsInternal().PlatformHelper.GetSettingValue(ConstantsUniversal.AuthLastAuthorizedVersionKey);
                needsLogin = (lastAuthorizedVersion == null) || (new Version(lastAuthorizedVersion) < new Version(HockeyClient.Current.AsInternal().VersionInfo));
            }

            if (needsLogin)
            {
                this.ShowLoginScreen(authMode, appSecret, email, authValidationMode);
            }
            else
            {
                this.ExecuteSuccessRedirectOrAction();
            }
        }
コード例 #22
0
        /// <summary>
        /// Identify user with hockeaypp auth. Opening a login page to require valid email address for app if needed
        /// </summary>
        /// <param name="this"></param>
        /// <param name="appSecret">Your app's app secret (see HockeyApp app page)</param>
        /// <param name="successRedirect">Page-URI to redirect to after successful login</param>
        /// <param name="navigationService">[optional] obsolete - not needed</param>
        /// <param name="eMail">[Optional] initial email</param>
        /// <param name="tokenValidationPolicy"><see cref="TokenValidationPolicy"/></param>
        /// <param name="authValidationMode"><see cref="AuthValidationMode"/></param>
        public static void IdentifyUser(this IHockeyClient @this, string appSecret,
            Uri successRedirect, NavigationService navigationService = null,
            string eMail = null,
            TokenValidationPolicy tokenValidationPolicy = TokenValidationPolicy.EveryLogin,
            AuthValidationMode authValidationMode = AuthValidationMode.Graceful)

        {
            @this.AsInternal().CheckForInitialization();
            AuthManager.Instance.AuthenticateUser(successRedirect, AuthenticationMode.Identify, 
                tokenValidationPolicy, authValidationMode, eMail, appSecret);
        }