예제 #1
0
        public async void Login(string code)
        {
            try
            {
                IsLoggingIn = true;
                var ret = await Task.Run(() => Client.GetAuthorizationCode(ClientId, ClientSecret, code));

                var data = await Task.Run(() => {
                    UsersModel u;
                    var c = Client.BearerLogin(ret.AccessToken, out u);
                    return(Tuple.Create(c, u));
                });

                var bitbucketClient = data.Item1;
                var usersModel      = data.Item2;

                var account = _accountsService.Find(usersModel.User.Username);
                if (account == null)
                {
                    account = new BitbucketAccount()
                    {
                        Username     = usersModel.User.Username,
                        AvatarUrl    = usersModel.User.Avatar,
                        RefreshToken = ret.RefreshToken,
                        Token        = ret.AccessToken
                    };
                    _accountsService.Insert(account);
                }
                else
                {
                    account.RefreshToken = ret.RefreshToken;
                    account.Token        = ret.AccessToken;
                    account.AvatarUrl    = usersModel.User.Avatar;
                    _accountsService.Update(account);
                }

                this.GetApplication().ActivateUser(account, bitbucketClient);
                ShowViewModel <StartupViewModel>();
            }
            catch (Exception e)
            {
                DisplayAlert("Unable to login: " + e.Message);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }
예제 #2
0
        private async Task Login()
        {
            try
            {
                IsLoggingIn = true;
                var ret = await Task.Run(() => Client.GetAuthorizationCode(ClientId, ClientSecret, Code));

                var data = await Task.Run(() => {
                    UsersModel u;
                    var c = Client.BearerLogin(ret.AccessToken, out u);
                    return(Tuple.Create(c, u));
                });

                var bitbucketClient = data.Item1;
                var usersModel      = data.Item2;

                var account = _accountsService.Find(usersModel.User.Username);
                if (account == null)
                {
                    account = new BitbucketAccount
                    {
                        Username     = usersModel.User.Username,
                        AvatarUrl    = usersModel.User.Avatar,
                        RefreshToken = ret.RefreshToken,
                        Token        = ret.AccessToken
                    };
                    _accountsService.Insert(account);
                }
                else
                {
                    account.RefreshToken = ret.RefreshToken;
                    account.Token        = ret.AccessToken;
                    account.AvatarUrl    = usersModel.User.Avatar;
                    _accountsService.Update(account);
                }

                _applicationService.ActivateUser(account, bitbucketClient);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }