public async Task<AuthResponse> authenticate (string userName, string userPassword, string pin)
		{
			AuthResponse authresponse = new AuthResponse ();

			String path = string.Format (@"https://www.pengeplan.dk/api/user/authenticate/{0}", userName);
			var request = (HttpWebRequest)WebRequest.Create (path);
			request.ContentType = "application/json";
			request.Method = "GET";
			setBasicAuthHeader (request, userName, userPassword);

			try {
				using (HttpWebResponse response = request.GetResponse () as HttpWebResponse) {
					if (response.StatusCode == HttpStatusCode.OK) {
						using (StreamReader reader = new StreamReader (response.GetResponseStream ())) {
							var content = reader.ReadToEnd ();

							authresponse = JsonConvert.DeserializeObject<AuthResponse> (content);
							authresponse.username = userName;
							authresponse.password = userPassword;
							authresponse.pin = pin;
						}
					} 
				}
			} catch (WebException ex) {
				authresponse.ex = ex;
			}
			return authresponse;
		}
 public AuthResponse UserInfo()
 {
     IEnumerable<Account> accounts = accountStore.FindAccountsForService (CREDENTIALS_SERVICE);
     Account account = accounts.FirstOrDefault ();
     string username = account.Username;
     string password = account.Properties [LoginService.PASSWORD];
     AuthResponse response = new AuthResponse ();
     response.username = username;
     response.password = password;
     return response;
 }
 public void StoreCredentials(AuthResponse authResponse)
 {
     DeleteCredentials ();
     Dictionary<string, string> dic = new Dictionary<string, string> ();
     dic.Add (PASSWORD, authResponse.password);
     if (authResponse.pin.Length >= PIN_MIN_LENGTH) {
         dic.Add (PIN, authResponse.pin);
     }
     Account account = new Account (authResponse.username, dic, null);
     accountStore.Save (account, CREDENTIALS_SERVICE);
 }
		public async Task<bool> Login ()
		{
			AuthResponse response = new AuthResponse ();
			if (string.IsNullOrEmpty (Username))
				throw new Exception ("Username is blank.");
			if (string.IsNullOrEmpty (Password))
				throw new Exception ("Password is blank.");
			if (Remember && (string.IsNullOrEmpty (Pin) || Pin.Length < LoginService.PIN_MIN_LENGTH))
				throw new Exception ("Pin is blank or to small.");

			IsBusy = true;
			try {
				response = await pengeplanApi.authenticate (Username, Password, Pin);
				if (response.authorized)
					loginService.StoreCredentials (response);
			} finally {
				IsBusy = false;
			}
			return response.authorized;
		}