vk авторизация от имени сообщества

108
02 июля 2021, 20:50

Начинаю программировать на C# по этому возможно чего-то просто не могу увидеть. Рою интернет несколько дней, не могу найти информацию о том как авторизироваться через токен группы. Хотел попробовать без JSON, просто чтобы поиграться с методами в консоли или в WPF, а потом уже развернуть на серверах. Т.е. я просто не могу понять как именно авторизироваться. Поскольку нигде нет нормального примера на С#, а те что есть, реализуют авторизацию от имени пользователя, а не группы.

Пример моего быдлокода:

class Program
{
    static void Main(string[] args)
    {
        var api = new VkApi();
        api.Authorize(new ApiAuthParams() //метод авторизации
        {
            ApplicationId = 7120944, //id приложения. 
            AccessToken = "****",//ключ токен от группы
        });
        // Отправка сообщения себе
        api.Messages.Send(new VkNet.Model.RequestParams.MessagesSendParams
        {
            UserId= 8238539, //тут ид пользователя кому нужно отправить сообщение
            Message = "message" //само сообщение
        });
        Console.ReadLine();
    }
}
Answer 1

Код является сугубо теоретическим и использовать такое в продакшене не рекомендую
Достаём адресата из диалогов группы, потом указываем его в запросе на отправку сообщений

        var random = new Random();            
        var api = new VkApi();
        api.Authorize(new ApiAuthParams {AccessToken = Token});
        var dialogs = api.Messages.GetConversations(new GetConversationsParams
        {
            Count = 5, Offset = 0
        });
        api.Messages.Send(new MessagesSendParams
        {
            RandomId = random.Next(),
            PeerId = dialogs.Items[0].Conversation.Peer.Id,
            Message = "It works"
        });

И естественно это не единственный способ сделать это. Подробнее можно почитать в официальной документации.

Answer 2

Сначала объявите экземпляр класса, в моем случае VkApi Api = new VkApi();

void authorize()
                    {
                        api.Authorize(new ApiAuthParams() { AccessToken = "token" }); //API key
                    }

Далее вызываете функцию, которая авторизует Вас, и после, запросите запросите LongPoll сервер, чтобы с него потом спрашивать нужные Вам данные. Пример вырванного куска

var s = new LongPollServerResponse();
s = api.Groups.GetLongPollServer(id); //id группы
            while (true)
                {
                    var poll = api.Groups.GetBotsLongPollHistory(
                    new BotsLongPollHistoryParams()
                    { Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 25 });
                    if (poll?.Updates == null) continue;
                    foreach (var a in poll.Updates)
                    {
                        if (a.Type == GroupUpdateType.MessageNew)
                        {
                            userMessage = a.Message.Body;       //Сообщение
                            userID = a.Message.UserId;          //ID пользователя, отправившего сообщение
                            payload = a.Message.Payload;
                        }
                    }
               }

Для отправки сообщений использую

void SendMessage(string message, long? ID)
                {
                    Random rnd = new Random();
                    api.Messages.Send(new MessagesSendParams
                    {
                        RandomId = rnd.Next(),
                        UserId = ID,
                        Message = message
                    });
                }
READ ALSO
Unity3D Неправильно поворачивается объект

Unity3D Неправильно поворачивается объект

Делаю небольшую игру на Unity и C#Проблема в том, что когда поворачивается объект, вместо поворота он растягивается (Коллайдер тоже)

86
как перевести yii2 на production

как перевести yii2 на production

Я облазил весь интернет в поиске того, как перевести yii2 на продакшинИ практическе везде я видел ответы типа:

140
Добавить дисклеймер в cookies браузера

Добавить дисклеймер в cookies браузера

Как правильно записывать страницу в cookies?

120