Как создать клиент Вконтакте для Android

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Лучший клиент вк на андроид!

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

f1b811e Mar 3, 2015

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

ВКонтакте Android SDK

ВКонтакте Android SDK предназначен для быстрой интеграции вашего Android-приложения с ВКонтакте API.

Быстро понять принципы работы библиотеки вам поможет демо-проект AndroidVkSdkSample. В нём реализована авторизация и в качестве примера отправка записи на свою стеную.
Чтобы подключить библиотеку к своему проекту, нужно выполнить следующие шаги:

  1. Импортировать проект AndroidVkSdk в Eclipse. AndroidVkSdk реализован как Android Library Project.
  2. Добавить в своём проекте ссылку на AndroidVkSdk.
  3. Убедиться что у вашего приложения есть разрешение на доступ в Интернет

uses-permission android_name=»android.permission.INTERNET»/>
String url=Auth.getUrl(API_ID, Auth.getSettings()); webview.loadUrl(url);
API api=new Api(access_token, API_ID);
api.

createWallPost(user_id, text, null, null, false, false, false, null, null);

Проекты использующие ВКонтакте Android SDK

Библиотека распространяется по лицензии MIT.

Источник: github.com

Авторизация ВКонтакте через WebView в Android приложении

Здравствуй дорогой друг, в этой статье, на простом примере мы рассмотрим, каким образом можно реализовать авторизацию и использование api социальной сети «ВКонтакте» без подключения официального SDK. Пример приложения можно скачать на github по ссылке в конце статьи.

Еще по теме:  Как поделиться ссылкой приглашением на звонок в vk calls

Создаем проект, подключаем зависимости

В проекте я буду использовать kotlin, mvvm, binding, navgraph подразумевается, что ты уже знаешь, что это такое 🙂

Это крутое творение ВКонтакте обзор VTLite лучший клиент ВК на Android лучший ВК Клиент 2022 год

Создаем новый проект на основе Empty Activity, я назову его OAuthWithVK_Example

Создание нового проекта

Добавляем в зависимости.

implementation ‘androidx.navigation:navigation-fragment-ktx:2.4.1’ implementation ‘androidx.navigation:navigation-ui-ktx:2.4.1’ implementation ‘com.squareup.retrofit2:retrofit:2.9.0’ implementation ‘com.squareup.retrofit2:converter-scalars:2.9.0’

Создаем необходимые классы и файлы

Создадим класс «App» расширяющий «Application», он будет представлять наше приложение и содержать экземпляр «AccountService» для хранения токена и экземпляр «Retrofit» с url для запросов к ВК api. Через companion object будем получать доступ к App и созданным экземплярам. По хорошему это нужно делать через DI, но для простоты примера сделаем так.

/** * Представляет приложение. */ class App : Application() < /** * Возвращает или устанавливает сервис хранения настроект. */ lateinit var accountService: IAccountService /** * Возвращает или устанавливает экземпляр ретрофита. */ lateinit var retrofit: Retrofit companion object < lateinit var application: App >override fun onCreate() < super.onCreate() application = this accountService = VKAccountService(getSharedPreferences(«vk_account», MODE_PRIVATE)) retrofit = Retrofit.Builder() .baseUrl(«https://api.vk.com/method/») .addConverterFactory(ScalarsConverterFactory.create()) .build() >>

Создадим интерфейс «IAccountService» и его реализацию «VKAccountService», сервис будет предоставлять возможность сохранять и получать token и userId.

/** * Определяет интерфейс получения и установки параметров аккаунта. */ interface IAccountService < /** * Возвращает или устанавливает токен. */ var token: String? /** * Возвращает или устанавливает идентификатор пользователя. */ var userId: String? >
Класс VKAccountService

Создадим класс активити с именем «MainActivity» и соответствующий ему файл разметки «activity_main». Он будет содержать FragmentContainerView для навигации.

/** * Представляет основное активити приложения. */ class MainActivity : AppCompatActivity() < private lateinit var appBarConfiguration: AppBarConfiguration private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.toolbar) val navController = (supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment).navController appBarConfiguration = AppBarConfiguration(navController.graph) setupActionBarWithNavController(navController, appBarConfiguration) >override fun onSupportNavigateUp(): Boolean < val navController = findNavController(R.id.nav_host_fragment) return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() >>
Файл разметки activity_main

Обновим файл манифеста, указав корневое активити.

Для навигации по фрагментам понадобится файл «nav_graph».

Теперь создадим первый класс фрагмента для авторизации, назовем его «AuthFragment». Здесь нам нужен только виджет WebView, который создадим программно. Для открытия окна авторизации нужен url с параметрами, создаем приватное поле с именем «_authParams», оно будет содержать строку с необходимой конфигурацией, далее передадим ее в WebView. В методе onViewCreated будем открывать окно аутентификации, реагировать на события ‘Подтверждение разрешений’, ‘Ошибка ввода логина/пароля’, ‘Успех’ и др. В коде я оставил TODO куда нужно будет вставить ваш client_id приложения, как его получить рассмотрим в конце статьи.

/** * Представляет фрагмент ‘Войти в аккаунт’. */ class AuthFragment : Fragment() < private val webview by lazy < WebView(context!!) >private val _authParams = StringBuilder(«https://oauth.vk.com/authorize?»).apply < append(String.format(«%s=%s», URLEncoder.encode(«client_id», «UTF-8»), URLEncoder.encode(/*TODO Сюда вставить id приложения созданного в ВК в разделе «Developers»*/, «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«redirect_uri», «UTF-8»), URLEncoder.encode(«https://oauth.vk.com/blank.html», «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«display», «UTF-8»), URLEncoder.encode(«mobile», «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«scope», «UTF-8»), URLEncoder.encode(VKAccountService.SCOPE, «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«response_type», «UTF-8»), URLEncoder.encode(«token», «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«v», «UTF-8»), URLEncoder.encode(«5.131», «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«state», «UTF-8»), URLEncoder.encode(«12345», «UTF-8»)) + «) append(String.format(«%s=%s», URLEncoder.encode(«revoke», «UTF-8»), URLEncoder.encode(«1», «UTF-8»))) >.toString() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ) = webview override fun onViewCreated(view: View, savedInstanceState: Bundle?) < super.onViewCreated(view, savedInstanceState) if (App.application.accountService.token == null) < webview.webViewClient = AuthWebViewClient(context!!) < status ->when(status) < AuthStatus.AUTH -> < >AuthStatus.CONFIRM -> < >AuthStatus.ERROR -> < Toast.makeText(context, «Не верный логин или пароль», Toast.LENGTH_LONG).show() >AuthStatus.BLOCKED -> < showAuthWindow() Toast.makeText(context, «Аккаунт заблокирован», Toast.LENGTH_LONG).show() >AuthStatus.SUCCESS -> < val url = webview.url!! val tokenMather = Pattern.compile(«access_token=\w+»).matcher(url) val userIdMather = Pattern.compile(«user_id=\w+»).matcher(url) // Если есть совпадение с патерном. if (tokenMather.find() userIdMather.find()) < val token = tokenMather.group().replace(«access_token=».toRegex(), «») val userId = userIdMather.group().replace(«user_id=».toRegex(), «») // Если токен и id получен. if (token.isNotEmpty() userId.isNotEmpty()) < App.application.accountService.token = token App.application.accountService.userId = userId navigateToInfo() >> > > > > else < navigateToInfo() >> override fun onStart() < super.onStart() if (App.application.accountService.token == null) < showAuthWindow() >> private fun showAuthWindow() < CookieManager.getInstance().removeAllCookies(null) webview.loadUrl(_authParams) >private fun navigateToInfo() < findNavController().navigate(R.id.action_AuthFragment_to_InfoFragment) >>

Еще по теме:  Как сделать чтобы человека заблокировали в ВК

В зависимости от того какое событие сейчас происходит (ввод пароля, ошибка, заблокированный аккаунт), текущий url у WebView будет изменяться, на основе этого будем определять текущий статус аутентификации. Для этого создадим класс «AuthWebViewClient» расширяющий «WebViewClient», переопределим метод onPageFinished в котором будем парсить текущую открытую ссылку.

Перечислим статусы аутентификации в enum, который назовем «AuthStatus», этот enum будем передаваться кэлбеком из класса AuthWebViewClient во фрагмент.

/** * Перечисляет статусы аутентификации клиента. */ enum class AuthStatus < /** * Статус ввода логина и пароля. */ AUTH, /** * Статус подтверждения разрешений. */ CONFIRM, /** * Статус завершения авторизации с ошибкой. */ ERROR, /** * Статус заблокированного пользователя. */ BLOCKED, /** * Статус успешного завершения авторизации. */ SUCCESS >

После верного ввода логина/пароля и подтверждения разрешений, будет получен и записан в память токен и идентификатор пользователя. С фрагментом аутентификации на этом все.

Приступим к созданию второго фрагмента, здесь мы сделаем всего 1 запрос на получение списка друзей. На экране покажем кнопку для выхода, textview для показа кол-ва друзей и скролящийся textview для показа списка друзей.

Создадим фрагмент с именем «InfoFragment» и соответствующий ему xml файл с разметкой «info_fragment».

Файл разметки info_fragment

‘/> » android_layout_marginVertical=»16dp» android_scrollbars=»vertical»/>

Запрос на список друзей будем делать во ViewModel, эту вью модель передадим в биндинг, LiveData сама будет устанавливать данные в TextView.

/** * Определяет модель представления фрагмента ‘Инфо’. */ class InfoViewModel: ViewModel() < private val _count = MutableLiveData() private val _friends = MutableLiveData() /** * Возвращает кол-во друзей. */ val count: LiveData = _count /** * Возвращет список друзей. */ val friends: LiveData = _friends init < viewModelScope.launch < val response = App.application.retrofit.create(FriendsGetRequest::class.java).friendsGet( App.application.accountService.token. «5.131», «name» ) val friendsList = StringBuilder() val items = JSONObject(response).getJSONObject(«response»).getJSONArray(«items») for (i in 0 until items.length()) < friendsList.append( «$$n» ) > _count.postValue(JSONObject(response).getJSONObject(«response»).getString(«count»)) _friends.postValue(friendsList.toString()) > > >

Еще по теме:  Как выиграть лотерею в Вконтакте

Осталось написать интерфейс «FriendsGetRequest» с запросом для ретрофит и на этом с программной частью будем заканчивать 🙂

Теперь разберемся, как получить client_id, это один из параметров запроса на авторизацию, его выдает ВК для понимания, какое приложение собирается обращаться к его api. Что бы его получить зайдите на свою страницу ВК и найдите меню «Управление», если его нет в списке, нужно добавить его в настройках страницы.

Кликнув по меню «Управление» мы попадем в раздел «Мои приложения», для создания нового приложения нажмите кнопку «Создать»

Раздел «Мои приложения»

В открывшемся окне укажите название приложения и выберите тип «Standalone-приложение» далее жмем кнопку «Подключить приложение». После нажатия на кнопку, вам придет смс на подключенный к странице номер.

Когда приложение будет создано перейдите в меню «Настройки», там будет указан client_id, который нужно вставить в код на место TODO, все остальные настройки по желанию 🙂

Меню настройки приложения

Скачать пример проекта можно здесь

Источник: temofeev.ru

Продвинутый курс по разработке приложения для группы VK

В процессе курса вы научитесь создавать в Android Studio клиент-серверные приложения для социальных сетей с использованием самых современных подходов в разработке, таких как реактивное программирование c RxJava и модульная архитектура на основе паттерна MVP.

Продвинутый курс по созданию андроид-приложения Вконтакте

  • VK API – открытое API для взаимодействия с социальной сетью Вконтакте
  • RxJava 2 – фреймворк для реализации парадигмы реактивного программирования
  • MVP (Model-View-Presenter) – паттерн для создания модульной архитектуры приложения
  • Moxy – библиотека для удобной реализации паттерна MVP
  • FCM (Firebase Cloud Messaging) – сервис для реализации push-уведомлений в приложении
  • Realm – библиотека для удобной организации хранения данных
  • Retrofit – библиотека для REST-взаимодействия с сервером
  • Butterknife – библиотека для удобной инициализации ресурсов
  • Dagger 2 – библиотека для реализации dependency injection

Мы покажем, как использовать эти и другие полезные инструменты и подходы в боевых условиях реальной разработки.

Как записаться на курс?

Воспользуйтесь кнопкой ниже для перехода на страницу оплаты. После оплаты отправьте через форму обратной связи сообщение с темой «Подписка на курс Вконтакте». В сообщении укажите email, на который будут отправлены данные для доступа.

Источник: www.fandroid.info

Рейтинг
( Пока оценок нет )
Загрузка ...