コード例 #1
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                uint     appIDD   = 7099217;
                Settings settings = Settings.All;
                vkApi.Authorize(new ApiAuthParams
                {
                    ApplicationId = appIDD,
                    Login         = Login.Text,
                    Password      = PasswordBox.Password,
                    Settings      = settings,
                });;
            }
            catch (Exception)
            {
                MessageBox.Show("Введены неверные данные", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            VkApi = vkApi;
            Window1 form1 = new Window1();

            form1.Show();
            Visibility = Visibility.Hidden;
            GC.Collect();
        }
コード例 #2
0
        private void AccountList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            VkNet.VkApi api  = new VkNet.VkApi();
            var         item = (UserData)AccountList.SelectedItem;

            api.Authorize(new VkNet.Model.ApiAuthParams
            {
                AccessToken = item.Token,
                UserId      = (long)item.Id,
            });
            try
            {
                api.Account.GetInfo();
                if (api.IsAuthorized)
                {
                    Tools.VkApi = api;
                }
            }
            catch (VkNet.Exception.UserAuthorizationFailException ex)
            {
                PreviewErrorBorder              = this.AccountListPanelBorder;
                PreviewErrorBorder.Visibility   = Visibility.Collapsed;
                this.AuthErrorBorder.Visibility = Visibility.Visible;

                this.AuthErrorCodeTextRun.Text = "Код:" + ex.ErrorCode;
                this.AuthErrorTextRun.Text     = ex.Message;
            }
        }
コード例 #3
0
        public async Task <long> SendWallMessage(VkNet.VkApi vkApi, long idGroup, Guid idMessage, params long[] vkUserIds)
        {
            var message = await _context.Messages
                          .Include(x => x.Files)
                          .FirstOrDefaultAsync(x => x.Id == idMessage);

            var idFiles     = message.Files.Select(x => x.IdFile).ToArray();
            var attachments = await _context.Files
                              .Where(x => idFiles.Contains(x.Id))
                              .Select(x => x.VkUrl)
                              .Select(x => Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Attachments.Photo>(x))
                              .ToArrayAsync();

            string text = await UpdateMessage(_context, message.Text, vkUserIds);

            var postId = await vkApi.Wall.PostAsync(new VkNet.Model.RequestParams.WallPostParams()
            {
                Attachments = (!attachments?.Any() ?? true) ? null : attachments,
                Message     = text,
                OwnerId     = -idGroup,
                FromGroup   = true
            });// VkConnector.Methods.Wall.Post(userAccessToken, idGroup, text, attachments);

            await _context.WallPosts.AddAsync(new Models.Database.WallPosts()
            {
                DtAdd   = DateTime.UtcNow,
                IdGroup = idGroup,
                IdVk    = postId,
                Text    = text
            });

            await _context.SaveChangesAsync();

            return(postId);
        }
コード例 #4
0
ファイル: VkPoolService.cs プロジェクト: green16/sellerbox
        public async Task <VkNet.VkApi> GetGroupVkApi(long idGroup)
        {
            if (GroupsVkApis.ContainsKey(idGroup))
            {
                return(GroupsVkApis[idGroup]);
            }

            var groupAccessToken = await _context.Groups
                                   .Where(x => x.IdVk == idGroup)
                                   .Select(x => x.AccessToken)
                                   .FirstOrDefaultAsync();

            if (string.IsNullOrWhiteSpace(groupAccessToken))
            {
                return(null);
            }

            var groupVkApi = new VkNet.VkApi();
            await groupVkApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams()
            {
                AccessToken   = groupAccessToken,
                ApplicationId = _configuration.GetValue <ulong>("VkApplicationId"),
                Settings      = VkNet.Enums.Filters.Settings.All
            });

            GroupsVkApis.TryAdd(idGroup, groupVkApi);

            return(groupVkApi);
        }
コード例 #5
0
        static void Main(string[] args)
        {
            VkApi.VkApi api = new VkApi.VkApi((int)_applicationId, "messages");
            //api.Authorization("+79687361740", ",eheyler"); //Моя авторизация перестала работать
            VkNet.VkApi net = new VkNet.VkApi();
            net.Authorize(new VkNet.ApiAuthParams //Авторизация работает, но апи слабое
            {
                Login         = "******",
                ApplicationId = _applicationId,
                Password      = "******",
                Settings      = Settings.All
            });
            VkApi.VkApi.Token = net.Token; //А токен пригодится :)

            int membersCount = GroupService.GetMembersCount(27794994);

            List <User> users = new List <User>();

            for (int i = 0; membersCount > 0; membersCount -= 100, i++)
            {
                int count = membersCount >= 100 ? 100 : membersCount;
                IEnumerable <User> currentUsers = GroupService.GetMembers(27794994, (0 + i * 100), count, 10);
                currentUsers = currentUsers.Where(u => u.sex == Sex.Female && (u.relation != Relation.HaveFriend || u.relation != Relation.Engaged || u.relation != Relation.Married || u.relation != Relation.Love) && u.deactivated == null);
                users.AddRange(currentUsers);
                Console.WriteLine($"Добавлено {currentUsers.Count()} пользователей. Осталось {membersCount} пользователей. Осталось {TimeSpan.FromSeconds(membersCount/200)}");
            }

            //IEnumerable<Item> UnreadMessages = messages.Where(message => message.ReadState == 1 && message.Attachments != null && message.Attachments.Where(attachment => attachment.Market != null).Count() != 0);
            //foreach (var message in UnreadMessages)
            //{
            //}
            Console.ReadKey();
        }
コード例 #6
0
        public HomeController()
        {
            VkApi.VkApi api = new VkApi.VkApi((int)_applicationId, "messages");
            //api.Authorization("+79687361740", ",eheyler"); //Моя авторизация перестала работать
            VkNet.VkApi net = new VkNet.VkApi();
            net.Authorize(new VkNet.ApiAuthParams //Авторизация работает, но апи слабое
            {
                Login         = "******",
                ApplicationId = _applicationId,
                Password      = "******",
                Settings      = Settings.All
            });
            VkApi.VkApi.Token = net.Token; //А токен пригодится :)

            int membersCount = GroupService.GetMembersCount(27794994);

            for (int i = 0; membersCount > 0; membersCount -= 100, i++)
            {
                int count = membersCount >= 100 ? 100 : membersCount;
                IEnumerable <User> currentUsers = GroupService.GetMembers(27794994, (0 + i * 100), count, 10);
                currentUsers = currentUsers.Where(u => u.sex == Sex.Female && (u.relation != Relation.HaveFriend || u.relation != Relation.Engaged || u.relation != Relation.Married || u.relation != Relation.Love) && u.deactivated == null);
                users.AddRange(currentUsers);
                Console.WriteLine($"Добавлено {currentUsers.Count()} пользователей. Осталось {membersCount} пользователей. Осталось {TimeSpan.FromSeconds(membersCount / 200)}");
            }
        }
コード例 #7
0
        private void ShowActiveAccounts()
        {
            AccountList.Items.Clear();
            List <long> Ids = new List <long>();

            foreach (var account in GetSavedAuthData())
            {
                long lgp = long.Parse(account["ID"].ToString());
                Ids.Add(lgp);
                Debug.WriteLine(lgp);
                AccountList.Items.Add(new UserData
                {
                    Id    = lgp,
                    Token = account["Token"].ToString(),
                    Name  = account["Name"].ToString(),
                });
            }
            var api = new VkNet.VkApi();

            api.Authorize(new VkNet.Model.ApiAuthParams()
            {
                AccessToken = "4b0168fd4b0168fd4b0168fd8f4b676c6744b014b0168fd1093d8fdf1e3c0017422a04c"
            });
            var data = api.Users.Get(Ids, ProfileFields.Photo50);

            for (int i = 0; i < AccountList.Items.Count; i++)
            {
                if (data[i].Photo50 != null)
                {
                    ((UserData)AccountList.Items[i]).AvatarUrl = data[i].Photo50.AbsoluteUri;
                }
            }

            Ids.Clear();
        }
コード例 #8
0
        public bool Join_Groups(VkNet.VkApi vk, string href_)
        {
            long guest_gruopID = 0;

            try
            {
                guest_gruopID = vk.Utils.ResolveScreenName(href_.Substring(href_.LastIndexOf('/') + 1)).Id.Value;
                return(vk.Groups.Join(guest_gruopID));
            }
            catch (VkNet.Exception.CaptchaNeededException ex)
            {
                MessageBox.Show("ВК требует капчу! К сожалению, Вам придется воити в ВК через браузер и " +
                                "попробовать вступить в какое-нибудь сообщество, что бы ВК предложил ввести капчу, там ее и введите. " +
                                "Затем можно вернуться в программу");

                return(false);
            }
            catch (VkNet.Exception.VkApiException ex)
            {
                MessageBox.Show(string.Format("Ошибка: {0}" + Environment.NewLine + "Для продолжения нажмити ОК", ex.Message));
                return(false);
            }

            // return false;
        }
コード例 #9
0
 private void dispatcherTimer_Tick(object sender, EventArgs e)
 {
     VkNet.VkApi api = new VkNet.VkApi();
     int lastCount = 0;
     Train train = Train.GetAllTrainInfo("ЗАПОРІЖЖЯ 1", "КИЇВ", "2015-06-28", "072П", 3);
     int currentCount = train.GetCountPlacesByCarType(new List<CarType>(){CarType.ReservedSeat,CarType.ReservedSeatFirm});
     if (currentCount > 0 && currentCount != lastCount)
         api.Messages.Send(162945005, false, "ЗАПОРІЖЖЯ 1 - КИЇВ 2015-06-28 072П місця - " + currentCount.ToString(), "Ticket reminder");
 }
コード例 #10
0
 protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null)
 {
     vk.Messages.Send(new MessagesSendParams
     {
         UserId     = Convert.ToInt64(user.Url),
         Message    = ":)",
         CaptchaSid = sid,
         CaptchaKey = captchaInText
     });
 }
コード例 #11
0
        private void AuthForm_Load(object sender, EventArgs e)
        {
            const string userRoot = "HKEY_CURRENT_USER";
            const string subkey   = "DefectorVK";
            const string keyName  = userRoot + "\\" + subkey;

            textBox1.Text = (string)Microsoft.Win32.Registry.GetValue(keyName, "key", "Введите ключ доступа");
            int num_code_ = 12000;

            if (CheckCode(textBox1.Text, ref num_code_))
            {
                numeric_of_code   = num_code_;
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                if (LoadSettingsFromReg() == 0)
                {
                    VkNet.VkApi vk   = new VkNet.VkApi();
                    var         time = vk.Utils.GetServerTime();
                    SaveSettingsToReg(DateTimeToDenTime(time));
                }
                else
                {
                    VkNet.VkApi vk         = new VkNet.VkApi();
                    var         nowtime    = vk.Utils.GetServerTime();
                    var         start_time = ConvertFromDenTimestamp(LoadSettingsFromReg());
                    start_time = start_time.AddDays(3);
                    if ((start_time - nowtime).TotalDays > 0 && (start_time - nowtime).TotalDays <= 3)
                    {
                        TimeSpan s = (start_time - nowtime);

                        string mess = string.Format("{0} д. {1} ч. {2} мин.", (int)s.TotalDays, (int)s.Hours, (int)s.Minutes);
                        label2.Text     = mess;
                        trial_code      = true;
                        numeric_of_code = 12001;
                        //this.DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        label2.Text        = "Период бесплатного использования закончен";
                        textBox1.Visible   = true;
                        label4.Visible     = true;
                        linkLabel1.Visible = true;
                        int num = 12000;
                        if (CheckCode(textBox1.Text, ref num))
                        {
                            numeric_of_code = num;
                            check_code      = true; // this.DialogResult = DialogResult.OK;
                        }
                        //this.DialogResult = DialogResult.Cancel;
                    }
                }
            }
        }
コード例 #12
0
ファイル: VkDisk.cs プロジェクト: DanyaSWorlD/VkDiskCore
        public static void Init(int appId)
        {
            var services = new ServiceCollection();

            services.AddAudioBypass();
            VkApi = new Va(services);

            ImageCache.Init();

            ApplicationId = (ulong)appId;
        }
コード例 #13
0
        public static void login()
        {
            ulong  appId    = 6236745;
            string email    = "79166054162";
            string password = "******";

            VkNet.Enums.Filters.Settings settings = VkNet.Enums.Filters.Settings.All;
            api = new VkNet.VkApi();
            api.Authorize(new VkNet.ApiAuthParams
            {
                ApplicationId = appId,
                Login         = email,
                Password      = password,
                Settings      = settings
            });
        }
コード例 #14
0
        private void SaveAuthData(VkNet.VkApi api)
        {
            var AccountInfo = api.Account.GetProfileInfo();


            var data = new JObject {
                { "ID", api.UserId },
                { "Name", AccountInfo.FirstName + " " + AccountInfo.LastName },
                { "Token", api.Token }
            };

            var kay = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("VkPlayerByOneCellDM");

            kay.SetValue(api.UserId.ToString(), data);
            kay.Close();
        }
コード例 #15
0
        /// <summary>
        /// Произведение конкретного действия.
        /// </summary>
        /// <param name="vk">Экземпляр ВК-сущности</param>
        /// <param name="user">Пользователь, над которым производится действие.</param>
        /// <param name="sid">ID каптчи.</param>
        /// <param name="captchaInText">Текст разгаданной каптчи.</param>
        /// <returns>Возвращает пользователя типа UserData.</returns>
        public bool MakeAction(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null)
        {
            try
            {
                Logger.Log($"{ActionTypeEnum} {user.FullName}({user.Url})");

                Act(vk, ref user, sid, captchaInText);

                ActionCommittedCount++;
                return(true);
            }
            catch (CaptchaNeededException ex)
            {
                Logger.Log(ex.Message);

                var solvedCaptcha = SolveCaptcha(ex.Img);
                return(!string.IsNullOrEmpty(solvedCaptcha) && MakeAction(vk, ref user, sid: ex.Sid, captchaInText: solvedCaptcha));
            }
            catch (Exception ex)
            {
                Logger.ErrorLog(ex);

                //TODO to special typed Exceprion?
                if (ex.Message.Contains("Unknown error occurred") ||
                    ex.Message.Contains("Flood control") ||
                    ex.Message.Contains("Permission to perform this action is denied"))
                {
                    IsActionLimitAchieved = true;
                }

                if (ex.Message.Contains("privacy settings") ||
                    ex.Message.Contains("user not found") ||
                    ex.Message.Contains("put you on their blacklist") ||
                    ex.Message.Contains("user deactivated") ||
                    ex.Message.Contains("Access denied"))
                {
                    user.UserActions.Add(new VkApi.UserAction
                    {
                        ProfileId      = Profile.Id,
                        ActionTypeId   = 0,
                        UpdateDateTime = DateTime.Now
                    });
                }
            }

            return(false);
        }
コード例 #16
0
 private static void SetVkApiInstrumentProfile(object sender, KeyValuePair <string, string> e)
 {
     api = new VkNet.VkApi();
     //6884639
     api.Authorize(new ApiAuthParams
     {
         ApplicationId = 6884639,
         Login         = "******",
         Password      = "******",
         // Settings = Settings.Friends,
         TwoFactorAuthorization = () =>
         {
             Console.WriteLine("Enter Code:");
             return(Console.ReadLine());
         }
     });
 }
コード例 #17
0
        private static void SetVkApiInstrumentProfile(object sender, KeyValuePair <string, string> e)
        {
            api = new VkNet.VkApi();

            api.Authorize(new ApiAuthParams
            {
                ApplicationId          = 6394527,
                Login                  = e.Key,
                Password               = e.Value,
                Settings               = Settings.All,
                TwoFactorAuthorization = () =>
                {
                    Console.WriteLine("Enter Code:");
                    return(Console.ReadLine());
                }
            });
        }
コード例 #18
0
ファイル: GroupActionLogic.cs プロジェクト: razorbohan/VKApi
        public bool MakeAction(VkNet.VkApi vk, long groupId, string post, long sid = 0, string captchaInText = null)
        {
            try
            {
                Logger.Log($"{ActionType} {groupId}");

                //var definedActionType = (GroupActionType) Enum.Parse(typeof (GroupActionType), actionType.ToString());
                switch (ActionType)
                {
                case GroupActionType.Post:
                    vk.Wall.Post(new WallPostParams
                    {
                        OwnerId    = -groupId,
                        Message    = post,
                        CaptchaSid = sid,
                        CaptchaKey = captchaInText
                    }); return(true);

                default: throw new WrongActionTypeException(ActionType.ToString());
                }
            }
            catch (CaptchaNeededException ex)
            {
                Logger.Log(ex.Message);

                var solvedCaptcha = SolveCaptcha(ex.Img);

                if (!string.IsNullOrEmpty(solvedCaptcha))
                {
                    MakeAction(vk, groupId, post, sid: ex.Sid, captchaInText: solvedCaptcha);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorLog(ex);
            }

            return(false);
        }
コード例 #19
0
        private async Task SendMessage(VkNet.VkApi vkApi, bool isImageFirst, string text, IEnumerable <VkNet.Model.Attachments.MediaAttachment> attachments, VkNet.Model.Keyboard.MessageKeyboard keyboard, long[] ids)
        {
            if (keyboard != null)
            {
                keyboard.OneTime = true;
            }
            string nbspString = new string(new char[] { (char)160 });

            var mediaAttachments = (attachments != null && attachments.Any()) ? attachments : null;

            if (!isImageFirst || mediaAttachments == null)
            {
                await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams()
                {
                    UserIds     = ids,
                    Message     = string.IsNullOrEmpty(text) ? nbspString : text,
                    Attachments = mediaAttachments,
                    Keyboard    = keyboard
                });

                return;
            }

            await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams()
            {
                UserIds     = ids,
                Message     = nbspString,
                Attachments = attachments
            });

            if (string.IsNullOrEmpty(text) && keyboard == null)
            {
                return;
            }

            await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams()
            {
                UserIds  = ids,
                Message  = string.IsNullOrEmpty(text) ? nbspString : text,
                Keyboard = keyboard
            });
        }
コード例 #20
0
        protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null)
        {
            var profilePhotos = vk.Photo.Get(new PhotoGetParams
            {
                OwnerId = user.Url,
                AlbumId = PhotoAlbumType.Profile
            });

            if (profilePhotos.Any())
            {
                vk.Likes.Add(new LikesAddParams
                {
                    Type       = LikeObjectType.Photo,
                    OwnerId    = user.Url,
                    ItemId     = Convert.ToInt64(profilePhotos[0].Id),
                    CaptchaSid = sid,
                    CaptchaKey = captchaInText
                });
            }
        }
コード例 #21
0
ファイル: VkPoolService.cs プロジェクト: green16/sellerbox
        public async Task <VkNet.VkApi> GetUserVkApi(long idVkUser)
        {
            if (UsersVkApis.ContainsKey(idVkUser))
            {
                return(UsersVkApis[idVkUser]);
            }

            var idUser = await _context.Users
                         .Where(x => x.IdVk == idVkUser)
                         .Select(x => x.Id)
                         .FirstOrDefaultAsync();

            var userAccessToken = await _context.UserTokens
                                  .Where(x => x.LoginProvider == "Vkontakte")
                                  .Where(x => x.UserId == idUser)
                                  .Where(x => x.Name == "access_token")
                                  .Select(x => x.Value)
                                  .FirstOrDefaultAsync();

            if (string.IsNullOrWhiteSpace(userAccessToken))
            {
                return(null);
            }

            var userVkApi = new VkNet.VkApi();

            try
            {
                await userVkApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams()
                {
                    AccessToken   = userAccessToken,
                    ApplicationId = _configuration.GetValue <ulong>("VkApplicationId"),
                    Settings      = VkNet.Enums.Filters.Settings.All
                });
            }
            catch { }
            UsersVkApis.TryAdd(idVkUser, userVkApi);

            return(userVkApi);
        }
コード例 #22
0
        public async Task SendMessages(VkNet.VkApi vkApi, long idGroup, Guid idMessage, params long[] vkUserIds)
        {
            var message = await _context.Messages
                          .Include(x => x.Files)
                          .FirstOrDefaultAsync(x => x.Id == idMessage);

            var idFiles     = message.Files.Select(x => x.IdFile).ToArray();
            var attachments = await _context.Files
                              .Where(x => idFiles.Contains(x.Id))
                              .Select(x => x.VkUrl)
                              .ToArrayAsync();

            var images = attachments.Select(x =>
            {
                try { return(Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Attachments.Photo>(x)); }
                catch { return(null); }
            }).Where(x => x != null);

            var keyboard = string.IsNullOrWhiteSpace(message.Keyboard) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Keyboard.MessageKeyboard>(message.Keyboard);

            if (HasAnyKeywords(message.Text))
            {
                string siteUrl = _configuration.GetValue <string>("SiteUrl");
                for (int idx = 0; idx < vkUserIds.Length; idx++)
                {
                    string text = message.Text;

                    var subscriber = await _context.Subscribers
                                     .Include(nameof(Models.Database.Subscribers.VkUser))
                                     .FirstOrDefaultAsync(x => x.IdGroup == idGroup && x.IdVkUser == vkUserIds[idx]);

                    if (subscriber != null)
                    {
                        text = UpdateMessageByVkUser(subscriber.VkUser, text);
                        text = await UpdateMessageByShortUrls(_context, siteUrl, subscriber, text);
                    }

                    bool hasError = false;
                    try
                    {
                        await SendMessage(vkApi, message.IsImageFirst, text, images, keyboard, new long[] { vkUserIds[idx] });
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"MessageHelper.SendMessages (vkUserId={vkUserIds[idx]}) exception: {ex.Message}{Environment.NewLine}{ex.StackTrace}");
                        hasError = true;
                    }
                    if (!hasError)
                    {
                        OnMessageSent(idGroup, vkUserIds.Length, idx + 1);
                    }
                }
            }
            else
            {
                int offset = 0;
                do
                {
                    var  currentUserIds = (Stepping > vkUserIds.Length - offset ? vkUserIds.Skip(offset) : vkUserIds.Skip(offset).Take(Stepping)).ToArray();
                    bool hasError       = false;
                    try
                    {
                        await SendMessage(vkApi, message.IsImageFirst, message.Text, images, keyboard, currentUserIds);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"MessageHelper.SendMessages exception: {ex.Message}{Environment.NewLine}{ex.StackTrace}");
                        hasError = true;
                    }

                    offset += currentUserIds.Length;
                    if (offset >= vkUserIds.Length)
                    {
                        break;
                    }
                    if (!hasError)
                    {
                        OnMessageSent(idGroup, vkUserIds.Length, offset);
                    }
                } while (offset < vkUserIds.Length);
            }
        }
コード例 #23
0
 public User(VkNet.VkApi VkApi, Action <MessageStatus, string> Log)
 {
     this.VkApi = VkApi;
     this.Log   = Log;
 }
コード例 #24
0
 protected abstract void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null);
コード例 #25
0
ファイル: UserActionAdd.cs プロジェクト: razorbohan/VKApi
 protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null)
 {
     vk.Friends.Add(user.Url, captchaSid: sid, captchaKey: captchaInText);
 }
コード例 #26
0
        private async Task <bool> GetVkontakteApiAsync()
        {
            bool result = false;

            if (!string.IsNullOrEmpty(UserAccessFlowApiKey) && !string.IsNullOrEmpty(ServiceApiKey))
            {
                var userApi = new VkNet.VkApi();

                try
                {
                    await userApi.AuthorizeAsync(new ApiAuthParams
                    {
                        AccessToken = UserAccessFlowApiKey,
                        Settings    = Settings.All | Settings.Offline
                    });
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error authorizing vkontakte api via user access flow key: " + e);
                }

                if (userApi.IsAuthorized)
                {
                    UserApi = userApi;
                    UserApi.SetLanguage(Language.Ru);
                }

                var serviceApi = new VkNet.VkApi();

                try
                {
                    await serviceApi.AuthorizeAsync(new ApiAuthParams
                    {
                        AccessToken   = ServiceApiKey,
                        ApplicationId = AppId,
                        Settings      = Settings.All | Settings.Offline
                    });
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error authorizing vkontakte api via service key: " + e);
                }

                if (serviceApi.IsAuthorized)
                {
                    ServiceApi = serviceApi;
                    ServiceApi.SetLanguage(Language.Ru);
                }

                if (UserApi != null && ServiceApi != null)
                {
                    ApiVersion = userApi.VkApiVersion.Version;
                    result     = true;
                }
            }
            else
            {
                Console.WriteLine("Error connecting to Vkontakte: no access keys available.");
            }

            return(result);
        }
コード例 #27
0
        private void TwoFactorAuth()
        {
            var api = new VkNet.VkApi();

            if (twoAuthorize == false)
            {
                var Awaiter = api.AuthorizeAsync(new VkNet.Model.ApiAuthParams()
                {
                    Password               = PasswordTextbox.Text,
                    Login                  = LoginTextBox.Text,
                    TwoFactorSupported     = true,
                    ApplicationId          = 6121396,
                    Settings               = Settings.Audio | Settings.Friends | Settings.Offline,
                    TwoFactorAuthorization = () =>
                    {
                        this.Dispatcher.Invoke(() =>
                        {
                            ShowTwoAuthComponents();
                        });
                        string code = "";
                        try
                        {
                            twoAuthorize = true;
                            while (codeSended != true)
                            {
                                Thread.Sleep(1000);
                            }
                            this.Dispatcher.Invoke(() =>
                            {
                                codeSended = false;
                                code       = TwoFactorCodeTextBox.Text;
                                TwoFactorCodeTextBox.Text = "";
                            });
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.Message);
                        }
                        return(code);
                    }
                }).GetAwaiter();
                Awaiter.OnCompleted(() =>
                {
                    try
                    {
                        Awaiter.GetResult();
                        if (api.IsAuthorized == true)
                        {
                            SaveAuthData(api);
                            ShowActiveAccounts();
                            showAccountList();
                        }
                    }
                    catch (VkNet.Exception.VkAuthorizationException ex)
                    {
                        this.PreviewErrorBorder            = LoginBorder;
                        this.PreviewErrorBorder.Visibility = Visibility.Collapsed;
                        this.AuthErrorBorder.Visibility    = Visibility.Visible;


                        this.AuthErrorTextRun.Text = ex.Message;


                        Debug.WriteLine(ex.StackTrace);
                    }
                    catch (VkNet.Exception.UserAuthorizationFailException ex)
                    {
                        this.PreviewErrorBorder = LoginBorder;

                        this.AuthErrorBorder.Visibility = Visibility.Visible;

                        this.AuthErrorCodeTextRun.Text = "Код:" + ex.ErrorCode;
                        this.AuthErrorTextRun.Text     = ex.Message;


                        Debug.WriteLine(ex.StackTrace);
                    }
                });
            }
            else
            {
                codeSended = true;
            }
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: mlobin/VKMessages
        static void Main(string[] args)
        {
            Dictionary <string, int>    words = new Dictionary <string, int>();
            Dictionary <string, string> keys  = new Dictionary <string, string>();


            VkNet.VkApi vkApi = new VkNet.VkApi();
            vkApi.Authorize(new ApiAuthParams
            {
                ApplicationId = 000000,
                Login         = "******",
                Password      = "******",
                Settings      = VkNet.Enums.Filters.Settings.All
            });
            Random      r     = new Random();
            List <User> users = new List <User>();
            List <long> aaa   = new List <long>();
            Test        yyyy  = Test.Load("msg_sc.json");
            Regex       rr    = new Regex("\\)+");
            //           yyyy.i -= 101032;//Хомяки
            //ulong hor = (ulong)vkApi.Messages.GetHistory(new VkNet.Model.RequestParams.MessagesGetHistoryParams { PeerId = 2000000107 }).Messages[0].OutRead;
            List <Message>          msg = new List <Message>();
            MessageGetHistoryObject aa  = new MessageGetHistoryObject();

            while (yyyy.i < 50980)
            {
                try
                {
                    int y = r.Next(21);
                    aa = vkApi.Messages.GetHistory(new VkNet.Model.RequestParams.MessagesGetHistoryParams
                    {
                        PeerId   = 2000000168, //для Аколитской флудилки цифра - 148, для студсовета - 168
                        Count    = 180 + y,
                        Offset   = yyyy.i,
                        Reversed = true
                    });
                    yyyy.i += 180 + y;
                }
                catch (Exception e)
                {
                    yyyy.i += 200;
                    continue;
                }
                Thread.Sleep(250 + r.Next(750));
                msg.AddRange(aa.Messages);
            }

            foreach (Message s in msg)
            {
                //int day = (((DateTime)s.Date).Year - 2016) * 365 + ((DateTime)s.Date).DayOfYear;
                if (yyyy.users.ContainsKey((long)s.FromId))
                {
                    yyyy.users[(long)s.FromId]++;
                }
                else
                {
                    yyyy.users.Add((long)s.FromId, 1);
                }
                if (s.Emoji.HasValue || rr.Match(s.Text).Value == s.Text)
                {
                    if (yyyy.smiles.ContainsKey((long)s.FromId))
                    {
                        yyyy.smiles[(long)s.FromId]++;
                    }
                    else
                    {
                        yyyy.smiles.Add((long)s.FromId, 1);
                    }
                }
                if (s.Attachments.Count > 0)
                {
                    if (yyyy.pictures.ContainsKey((long)s.FromId))
                    {
                        yyyy.pictures[(long)s.FromId]++;
                    }
                    else
                    {
                        yyyy.pictures.Add((long)s.FromId, 1);
                    }
                }
                if (s.Attachments.Count > 0 || s.Emoji.HasValue || rr.Match(s.Text).Value == s.Text)
                {
                    if (yyyy.flood.ContainsKey((long)s.FromId))
                    {
                        yyyy.flood[(long)s.FromId]++;
                    }
                    else
                    {
                        yyyy.flood.Add((long)s.FromId, 1);
                    }
                }

                /*if (yyyy.dates.ContainsKey(day))
                 *  yyyy.dates[day]++;
                 * else yyyy.dates.Add(day, 1);*/
            }

            List <long> a = new List <long>();

            foreach (var s in yyyy.users)
            {
                a.Add(s.Key);
            }
            var gusers = vkApi.Users.Get(a);
            var lusers = gusers.OrderBy(x =>
            {
                return(yyyy.users[x.Id]);
            }
                                        ).Reverse();
            int tst   = 0;
            int flood = 0;

            //         yyyy.i += 101032;

            foreach (var s in lusers)
            {
                string t = s.FirstName + " " + s.LastName;
                tst += yyyy.users[s.Id];
                if (!yyyy.pictures.ContainsKey(s.Id))
                {
                    yyyy.pictures.Add(s.Id, 0);
                }
                if (!yyyy.smiles.ContainsKey(s.Id))
                {
                    yyyy.smiles.Add(s.Id, 0);
                }
                if (!yyyy.flood.ContainsKey(s.Id))
                {
                    yyyy.flood.Add(s.Id, 0);
                }
                flood += yyyy.flood[s.Id];
                Console.WriteLine(t + " нафлудил: " + yyyy.users[s.Id].ToString() +
                                  " из них " + yyyy.pictures[s.Id].ToString() + " с картинками, и " + yyyy.smiles[s.Id].ToString() + " со смайлами");
            }
            //Console.WriteLine("Сергей написал " + (ser + seroff).ToString() + " сообщений только из скобочек, из них " + seroff + " не из трех. Злых (><) смайлов было "+serang+". Эл написал "+l+" косящихся глаз.");
            yyyy.Save("msg_sc.json");

            /*using (StreamWriter sw = new StreamWriter("int.txt", false))
             * {
             *  foreach (var t in yyyy.dates)
             *  {
             *      sw.Write(t.Value.ToString() + " ");
             *  }
             * }*/
            Console.ReadLine();
        }
コード例 #29
0
ファイル: GroupsController.cs プロジェクト: green16/sellerbox
        public async Task <IActionResult> ConnectCallback(string code)
        {
            string url = $"https://oauth.vk.com/access_token?" +
                         $"client_id={_configuration.GetValue<long>("VkApplicationId")}" +
                         $"&client_secret={_configuration.GetValue<string>("VkApplicationPassword")}" +
                         $"&redirect_uri={$"{_configuration.GetValue<string>("SiteUrl")}/Groups/ConnectCallback"}" +
                         $"&code={code}";

            string result = null;

            using (var client = new HttpClient())
            {
                var response = await client.PostAsync(url, null);

                result = await response.Content.ReadAsStringAsync();

                Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(result);
                //TODO: Добавить проверку на null у token
                var    token      = obj.Properties().FirstOrDefault(x => x.Name.StartsWith("access_token_"));
                var    idGroup    = long.Parse(token.Name.Split('_').Last());
                string tokenValue = token.Value.ToString();

                var group = await _context.Groups.Where(x => x.IdVk == idGroup).FirstOrDefaultAsync();

                if (group == null)
                {
                    group = new Groups()
                    {
                        IdVk = idGroup
                    };
                    await _context.Groups.AddAsync(group);
                }

                group.AccessToken = tokenValue;

                using (var vkGroupApi = new VkNet.VkApi())
                {
                    await vkGroupApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams()
                    {
                        AccessToken = tokenValue,
                        Settings    = VkNet.Enums.Filters.Settings.Groups
                    });

                    group.CallbackConfirmationCode = await vkGroupApi.Groups.GetCallbackConfirmationCodeAsync((ulong)idGroup);

                    var groups = await vkGroupApi.Groups.GetByIdAsync(null, idGroup.ToString(), VkNet.Enums.Filters.GroupsFields.Description);

                    var groupInfo = groups.FirstOrDefault();

                    group.Name  = groupInfo.Name;
                    group.Photo = groupInfo.Photo50.ToString();
                }
                await _context.SaveChangesAsync();

                var idUser = _userHelperService.GetUserId(User);

                var groupAdmin = await _context.GroupAdmins.Where(x => x.IdUser == idUser && x.IdGroup == idGroup).FirstOrDefaultAsync();

                if (groupAdmin == null)
                {
                    groupAdmin = new GroupAdmins()
                    {
                        IdGroup   = idGroup,
                        IdUser    = idUser,
                        DtConnect = DateTime.UtcNow
                    };
                    await _context.GroupAdmins.AddAsync(groupAdmin);
                }
                else
                {
                    groupAdmin.DtConnect = DateTime.UtcNow;
                }
                await _context.SaveChangesAsync();

                url = $"https://api.vk.com/method/groups.getCallbackServers?" +
                      $"access_token={tokenValue}" +
                      $"&group_id={idGroup}" +
                      $"&v={AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion}";

                response = await client.PostAsync(url, null);

                result = await response.Content.ReadAsStringAsync();

                var callbackServers = new VkResponse(result).ToVkCollectionOf <VkNet.Model.CallbackServerItem>(x => x);

                long idServer           = -1;
                var  callbackServerUrl  = _configuration.GetValue <string>("CallbackServerUrl");
                var  callbackServerInfo = callbackServers.FirstOrDefault(x => x.Url == callbackServerUrl);
                if (callbackServerInfo == null)
                {
                    url = $"https://api.vk.com/method/groups.addCallbackServer?" +
                          $"access_token={tokenValue}" +
                          $"&group_id={idGroup}" +
                          $"&url={_configuration.GetValue<string>("SiteUrl")}{callbackServerUrl}" +
                          $"&title={_configuration.GetValue<string>("CallbackServerName")}" +
                          $"&v={AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion}";
                    response = await client.PostAsync(url, null);

                    result = await response.Content.ReadAsStringAsync();

                    var json = Newtonsoft.Json.Linq.JObject.Parse(result);
                    idServer = new VkResponse(json[propertyName: "response"])
                    {
                        RawJson = result
                    }[key: "server_id"];
                }
                else
                {
                    idServer = callbackServerInfo.Id;
                }

                var callbackProperties = new VkNet.Model.CallbackSettings();
                foreach (var property in callbackProperties.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
                {
                    property.SetValue(callbackProperties, true);
                }
                var parameters = VkNet.Model.RequestParams.CallbackServerParams.ToVkParameters(new VkNet.Model.RequestParams.CallbackServerParams()
                {
                    GroupId          = (ulong)idGroup,
                    ServerId         = idServer,
                    CallbackSettings = callbackProperties
                });
                parameters.Add("access_token", tokenValue);
                parameters.Add("v", AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion);
                url = "https://api.vk.com/method/groups.setCallbackSettings";

                HttpContent content = new FormUrlEncodedContent(parameters);
                response = await client.PostAsync(url, content);

                result = await response.Content.ReadAsStringAsync();
            }
            return(RedirectToAction(nameof(IndexConnected), "Groups"));
        }