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); }
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); }
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"; } }
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; }
private async Task <Account> GetAccountAsync() { return((await _accountStore.FindAccountsForServiceAsync(_configProvider.AppName)).SingleOrDefault()); }