public async Task <bool> IsLoggedInAsync()
        {
            // First the app starts ensure that previous login is invalidated
            var value = _settingsService.GetValueOrDefault <string>("FirstRun", null);

            if (value == null)
            {
                await LogoutAsync();

                _settingsService.SetValue("FirstRun", "1stRun");
            }

            var accounts = await _accountStore.FindAccountsForServiceAsync(AuthProvider);

            Account account = accounts.FirstOrDefault();

            if (account == null)
            {
                return(false);
            }

            MobileServiceUser user = new MobileServiceUser(account.Username)
            {
                MobileServiceAuthenticationToken = account.Properties["Password"]
            };

            _mobileService.CurrentUser = user;

            return(true);
        }
        public async Task <Account> GetAccount(string name)
        {
            var appAccounts = await store.FindAccountsForServiceAsync(App.AppName);

            var account = appAccounts.FirstOrDefault(a => a.Username == name);

            return(account);
        }
示例#3
0
        public async Task <bool> IsLoggedInAsync()
        {
            var accounts = await _accountStore.FindAccountsForServiceAsync(AuthProvider);

            Account account = accounts.FirstOrDefault();

            if (account == null)
            {
                return(false);
            }

            MobileServiceUser user = new MobileServiceUser(account.Username)
            {
                MobileServiceAuthenticationToken = account.Properties["Password"]
            };

            _mobileService.CurrentUser = user;

            return(true);
        }
        public async Task DeleteAccount()
        {
            if (!await IsAccountExists())
            {
                return;
            }
            AccountStore accountStore   = AccountStore.Create();
            var          accountsSearch = await accountStore
                                          .FindAccountsForServiceAsync(App.AppName);

            var oldAccount = accountsSearch.FirstOrDefault();
            await accountStore.DeleteAsync(oldAccount, App.AppName);
        }
示例#5
0
        async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;

            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error     -= OnAuthError;
            }

            User user = null;

            if (e.IsAuthenticated)
            {
                // If the user is authenticated, request their basic user data from Google
                // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo
                var request  = new OAuth2Request("GET", new Uri(Constants.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    // The users email address will be used to identify data in SimpleDB
                    string userJson = await response.GetResponseTextAsync();

                    user = JsonConvert.DeserializeObject <User>(userJson);
                }
                if (account != null)
                {
                    store.Delete(account, Constants.AppName);
                }
                Application.Current.Properties["User"] = user;
                await store.SaveAsync(account = e.Account, Constants.AppName);

                Application.Current.Properties["Account"]            = (await store.FindAccountsForServiceAsync(Constants.AppName)).FirstOrDefault();
                Application.Current.Properties["Signed"]             = true;
                Xamarin.Forms.Application.Current.Properties["Boff"] = "Hello " + user.Name + "\n" + AppResource.ResourceManager.GetResourceSet(Thread.CurrentThread.CurrentCulture, true, true).GetString("Welcome2");
                loader.Tokenise();
            }
            else
            {
                Xamarin.Forms.Application.Current.Properties["Boff"] = "error";
            }
        }
示例#6
0
 private async Task <Account> GetAccountAsync()
 {
     return((await _accountStore.FindAccountsForServiceAsync(_clientAppProfile.AppName).ConfigureAwait(false)).SingleOrDefault());
 }
        private async void AccountStoreTestsAsync(object authenticator, AuthenticatorCompletedEventArgs ee)
        {
            AccountStore account_store = AccountStore.Create();
            await account_store.SaveAsync(ee.Account, provider);

            //------------------------------------------------------------------
            // Android
            // https://kb.xamarin.com/agent/case/225411
            // cannot reproduce
            try
            {
                //------------------------------------------------------------------
                // Xamarin.iOS - following line throws
                IEnumerable <Account> accounts = await account_store.FindAccountsForServiceAsync(provider);

                Account account1 = accounts.FirstOrDefault();
                //------------------------------------------------------------------
                if (null != account1)
                {
                    string token      = default(string);
                    string token_name = default(string);
                    Type   t          = authenticator.GetType();
                    if (t == typeof(Xamarin.Auth.OAuth2Authenticator))
                    {
                        token_name = "access_token";
                        token      = account1.Properties[token_name].ToString();
                    }
                    else if (t == typeof(Xamarin.Auth.OAuth1Authenticator))
                    {
                        token_name = "oauth_token";
                        token      = account1.Properties[token_name].ToString();
                    }
                    UIAlertView alert =
                        new UIAlertView
                        (
                            "Token 3",
                            "access_token = " + token,
                            null,
                            "OK",
                            null
                        );
                    alert.Show();
                }
            }
            catch (System.Exception exc)
            {
                // Xamarin.iOS
                // exc  {System.ArgumentNullException: Value cannot be null.
                //  Parameter name: data
                //      at Foundation.NSString.Fr…} System.ArgumentNullException
                // Value cannot be null.
                // Parameter name: data
                string msg = exc.Message;
                System.Diagnostics.Debug.WriteLine("Exception AccountStore: " + msg);
            }

            try
            {
                await AccountStore.Create().SaveAsync(ee.Account, provider + ".v.2");
            }
            catch (System.Exception exc)
            {
                string msg = exc.Message;
                System.Diagnostics.Debug.WriteLine("Exception AccountStore: " + msg);
            }

            try
            {
                //------------------------------------------------------------------
                // Xamarin.iOS - throws
                IEnumerable <Account> accounts = await account_store.FindAccountsForServiceAsync(provider + ".v.2");

                Account account2 = accounts.FirstOrDefault();
                //------------------------------------------------------------------
                if (null != account2)
                {
                    string token      = default(string);
                    string token_name = default(string);
                    Type   t          = authenticator.GetType();
                    if (t == typeof(Xamarin.Auth.OAuth2Authenticator))
                    {
                        token_name = "access_token";
                        token      = account2.Properties[token_name].ToString();
                    }
                    else if (t == typeof(Xamarin.Auth.OAuth1Authenticator))
                    {
                        token_name = "oauth_token";
                        token      = account2.Properties[token_name].ToString();
                    }
                    UIAlertView alert = new UIAlertView
                                        (
                        "Token 4",
                        "access_token = " + token,
                        null,
                        "OK",
                        null
                                        );
                    alert.Show();
                }
            }
            catch (System.Exception exc)
            {
                string msg = exc.Message;
                System.Diagnostics.Debug.WriteLine("Exception AccountStore: " + msg);
            }

            return;
        }
        private async void AccountStoreTestsAsync(object authenticator, AuthenticatorCompletedEventArgs ee)
        {
            AccountStore account_store = AccountStore.Create(this);
            await account_store.SaveAsync(ee.Account, provider);

            //------------------------------------------------------------------
            // Android
            // https://kb.xamarin.com/agent/case/225411
            // cannot reproduce
            Account account1 = (await account_store.FindAccountsForServiceAsync(provider)).FirstOrDefault();

            if (null != account1)
            {
                //------------------------------------------------------------------
                string token = default(string);
                if (null != account1)
                {
                    string token_name = default(string);
                    Type   t          = authenticator.GetType();
                    if (t == typeof(Xamarin.Auth.OAuth2Authenticator))
                    {
                        token_name = "access_token";
                        token      = account1.Properties[token_name].ToString();
                    }
                    else if (t == typeof(Xamarin.Auth.OAuth1Authenticator))
                    {
                        token_name = "oauth_token";
                        token      = account1.Properties[token_name].ToString();
                    }
                }
                //------------------------------------------------------------------
                Toast.MakeText
                (
                    this,
                    "access_token = " + token,
                    ToastLength.Long
                ).Show();
            }
            //------------------------------------------------------------------

            AccountStore.Create(this).Save(ee.Account, provider + ".v.2");

            //------------------------------------------------------------------
            // throws on iOS
            //
            IEnumerable <Account> accounts = await(AccountStore.Create(this).FindAccountsForServiceAsync(provider + ".v.2"));
            Account account2 = accounts.FirstOrDefault();

            if (null != account2)
            {
                //------------------------------------------------------------------
                string token = default(string);
                if (null != account2)
                {
                    string token_name = default(string);
                    Type   t          = authenticator.GetType();
                    if (t == typeof(Xamarin.Auth.OAuth2Authenticator))
                    {
                        token_name = "access_token";
                        token      = account2.Properties[token_name].ToString();
                    }
                    else if (t == typeof(Xamarin.Auth.OAuth1Authenticator))
                    {
                        token_name = "oauth_token";
                        token      = account2.Properties[token_name].ToString();
                    }
                }
                //------------------------------------------------------------------
                Toast.MakeText
                (
                    this,
                    "access_token = " + token,
                    ToastLength.Long
                ).Show();
            }
            //------------------------------------------------------------------

            return;
        }
示例#9
0
 private async Task <Account> GetAccountAsync()
 {
     return((await _accountStore.FindAccountsForServiceAsync(_configProvider.AppName)).SingleOrDefault());
 }