/VkNet.TokenMagic

Godmode token for full VK API access

Primary LanguageC#

VkNet.TokenMagic

Languages: EN, RU

Readme English

Extension for VkNet to authenticate as Android application, giving you access to full Audio API and probably more. This is a heavily refactored C# port of PHP vk-audio-token - all credits for reverse engineering and black magic to original author.

How it works:

  • Makes requests to Google servers as an Android app -> gets receipt string
  • Authenticates in VK using regular flow with login and password -> gets token string
  • Authenticates in VK arain using receipt and token -> gets refreshed token

This refreshed token gives you god mode and allows full API access.

Installation

Nuget

Install-Package VkNet.TokenMagic

.NET CLI

dotnet add package VkNet.TokenMagic

Examples

using VkNet.TokenMagic;
    ...
    var services = new ServiceCollection();
    
    //Add all the stuff to DI container:
    services.AddTokenMagic();
    var vkNet = new VkApi(services);
    
    // use login+password
    vkNet.Authorize(new ApiAuthParams
    {
        Login = "LOGIN",
        Password = "PASSWORD",
    });

Full test project is here

Notes

  • Cache token if possible!
  • Authentication flow might be broken in non-trivial cases (2FA, captcha, etc)
  • Had to reinvent RestClient with underlying HttpClient
  • No dependencies on ProtocolBuffers
  • No dependencies on external services except Gooogle

Acknowledgments

Readme Русский

Расширение VkNet для аутентификации под видом Android-приложения для доступа к полному API аудиозаписей и, возможно, даже больше. Это сильно отрефакторенный порт PHP vk-audio-token - вся уважуха за реверс и черную магию автору оригинала.

Как оно работает:

  • Делает запросы к серверам Google, прикидываясь Android-приложением -> получает строку receipt
  • Аутентифицируется в VK по стандартной схеме с логином и паролем -> получает строку токен
  • Аутентифицируется в VK еще раз, используя receipt и токен -> получает строку обновленный токен

Этот обновленный токен дает расширенные права и полный доступ к API.

Установка

Nuget

Install-Package VkNet.TokenMagic

.NET CLI

dotnet add package VkNet.TokenMagic

Примеры

using VkNet.TokenMagic;
    ...
    var services = new ServiceCollection();
    
    // Добавляем весь хлам в DI контейнер:
    services.AddTokenMagic();
    var vkNet = new VkApi(services);
    
    // используем логин+пароль
    vkNet.Authorize(new ApiAuthParams
    {
        Login = "LOGIN",
        Password = "PASSWORD",
    });

Полный тестовый проект здесь

Заметки

  • Кэшируйте токен, если возможно!
  • Аутентификация может быть сломана в нетривиальных случаях (2-х факторная, капча, и тд)
  • Пришлось переизобретать RestClient с используемым HttpClient
  • Нет зависимости от ProtocolBuffers
  • Нет зависимости от внешних сервисов, помимо Google

Благодарности