Нет авторизации вконтакте андроид
SDK упрощает использование API ВКонтакте в Android-приложениях. Пользователи смогут пройти авторизацию без ввода логина и пароля. После этого вы сможете сразу начать использовать методы API.
Поддерживаются версии Android 5.0 и выше.
Для получения отпечатка Вашего сертификата можно воспользоваться одним из следующих способов.
/.android/ для OS X и Linux,
Хранилище для release версии обычно создаётся разработчиком, поэтому вы должны сами создать или вспомнить его расположение.
2) После того, как Вы определили местоположение Вашего хранилища, используйте утилиту keytool (поставляемую совместно с Java SDK). Получите список ключей следующей командой:
keytool -exportcert -alias androiddebugkey -keystore path-to-debug-or-production-keystore -list -v
Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09
Удалив все двоеточия, Вы получите отпечаток своего ключа.
String[] fingerprints = VKUtils.getCertificateFingerprint(this, this.getPackageName());
Как правило, fingerprints содержит одну строку, которая будет отпечатком Вашего сертификата (в зависимости от того, каким сертификатом было подписано приложение).
В настройках приложения можно добавить несколько отпечатков, например, debug и release.
Вы можете добавить следующие зависимости в ваш файл project/build.gradle:
- android-sdk-core: базовая функциональность (обязательно).
- android-sdk-api: сгенерированные модели и методы.
- androidsdk: устаревшая копия android-sdk-core (будет удалена).
- androidsdkapi: устаревшая копия android-sdk-api (будет удалена).
К примеру, Ваш скрипт app/build.gradle будет содержать следующие зависимости:
dependencies <
implementation ‘com.vk:android-sdk-core:3.x.x
implementation ‘com.vk:android-sdk-api:3.x.x
>
Старые версии SDK вы можете найти здесь
Если у пользователя установлено приложение ВКонтакте, то авторизация пройдет через него без ввода логина и пароля.
Используйте метод VK.login
VK.login(activity, arrayListOf(VKScope.WALL, VKScope.PHOTOS))
Для доступа к API можно использовать как встроенные в SDK методы, так и получив access_token использовать свою библиотеку.
Выполняйте запросы с VK.execute
VKUsersCommand поддерживает деление на части для работы с лимитами API. В этом основное отличие VKUsersRequest от VKUsersCommand.
Также вы можете проверить VKWallPostCommand. Это пример сложного API-запроса с загрузкой файла.
Источник
Android и VKontakte SDK, часть 3 (авторизация и получение прав)
Во второй части я описал, как получить авторизацию от vk не используя сторонних библиотек и sdk. Недостаток данного способа в том, что каждому новому пользователю приходится вводить логин и пароль социальной сети. Время идет и вот vkontakte создает свою sdk для android! С помощью нее можно легко получить токен авторизации пользователя не вводя ни каких данных и даже не видя самого окна запроса прав.
Для начала нужно подключить Android VK SDK к вашему проекту и по пунктам выполнить все действия из официальной документации SDK по настройке и подключению, а именно: «Подготовка к использованию VK SDK», «Как получить отпечаток сертификата», «Подключение VK SDK в Android-приложении».
Далее создаем activity с авторизацией:
Вместо переменной vk_app_id нужно вписать свой ID приложения ВКонтакте. Данный экран выполняет все необходимые действия по получению токена и необходимой информации о пользователе. Использовать данных экран достаточно просто, допустим мы имеем некую кнопку, при нажатии на которую будет происходить авторизация:
VKONTAKTE_CODE — любое число, по которому будет происходить проверка в функции onActivityResult в переменной requestCode, что ответ пришел именно от нужного нам экрана, тем самым фильтровать логику ответов различных экранов (допустим, когда у нас несколько кнопок авторизации разных соц. сетей).
Данный код нужно расместить в любом месте вашего основного экрана, в мое случае это было в методе onCreate класса LoginActivity. Все полученные данные из экрана VKontakteActivity попадут в функцию onActivityResult основного экрана вашего приложения, т.е. откуда VKontakteActivity было запущено:
Данный способ существенно упрощает жизнь всем вашим пользователям, т.к. не заставляет вводить лишние данные при авторизации. Если вдруг у пользователя нет приложения ВКонтакте на телефоне, то vk sdk откроет страницу авторизации в обычном webview и сделает все, что было описано во второй части.
Источник
Авторизация в системе с помощью ВК (Android)
Подскажите, пожалуйста, как авторизоваться в системе с помощью социальной сети. Я не могу найти какой-то подробной информации о том, как это правильно сделать. Имеется сервер Java + Spring (Tomcat) и мобильное приложение Android. Вопрос заключается в том, как правильно построить механизм авторизации? Я могу с помощью SDK от ВК авторизовать пользователя на мобильном устройстве, да, но что это мне даёт? Как авторизовать его в системе? Авторизация в ВК даст мне какой-то токен? Который я отправлю на свой сервер, а сервер должен проверить валидность этого токена с помощью того же API от ВК? Где об этом можно почитать? Скажите, как вы решали подобные задачи.
1 ответ 1
Здесь есть несколько возможных решений. Я бы сделал как-то так:
- На мобиле юзер авторизуется в ВК, получая access_token .
- Отсылает токен на сервер.
- Сервер по токену получает профиль юзера с API ВК.
- Проверяет есть ли такой юзер в БД по его id в ВК.
- Если нет — создаёт юзера в своей БД, прописывая его id в ВК в поле таблицы юзеров.
- Если юзер такой уже есть или его только что создали — генерирует для него свой токен по логину (например id в ВК) и паролю (пусть это будет случайная строка, генерирующаяся при создании юзера)
- Отсылает на мобилу сгенерированный свой токен.
- Мобила пишет его в SharedPreferences и использует для запросов к серверу.
В итоге для юзера это будет выглядеть как логин через ВК, а у вас будет на сервере вся его доступная инфа из ВК, возможность логинить юзера по логину и паролю и все запросы к вашему серверу будут красиво требовать токена.
Источник
Нет авторизации вконтакте андроид
Интеграция с ВКонтакте
В рамках этого практического задания предлагается сделать небольшое приложение, использующее SDK социальной сети ВКонтакте для выполнения авторизации и нескольких несложных запросов. Работа с SDK описана на странице официально документациий для разработчиков ВКонтакте: https://vk.com/dev/android_sdk — и в процессе выполнения этого задания надо будет ознакомиться с ней и выполнить описанные в ней инструкции. В результате получится приложение, зарегистрированное для работы с ВКонтакте, которое можно будет использовать в качестве основы для реализации функций интеграции с социальной сетью, если такие функции понадобятся, к примеру, в курсовом проекте.
Первый экран приложения ( MainActivity ) содержит только кнопку «Войти через ВКонтакте», по нажатию на которую открывается второй экран.
Второй экран приложения ( VkDemoActivity ) при старте проверят, был ли пользователь приложения ранее уже авторизован во ВКонтакте, и если нет — выполняет авторизацию при помощи Vk SDK. В процессе этой авторизации может быть показан либо экран приложения ВКонтакте, если оно установлено на устройстве, либо страница мобильного сайта ВКонтакте, показанная в WebView внутри приложения. После успешной авторизации выполняется запрос информации о пользовтеле и показывается его фотография и имя. По нажатию на кнопку «Выйти» происходит выход на первый экран, чтобы можно было снова залогиниться тем же или другим пользователем.
Код первого экрана уже реализован, а код второго экрана надо написать в классе VkDemoActivity в рамках этого задания.
Задание 1 — Интеграция с VK SDK
Для того, чтобы можно было использовать функции Vk SDK в нашем приложении, нужно выполнить инструкции, описанные здесь: https://vk.com/dev/android_sdk
Подробнее по шагам:
Поменять ID приложения
ID Anroid приложения указывается в файле build.gradle в модуле приложения. По этому ID приложения идентифицируются, например, в магазине приложений Google Play, а в нашем случае он нужен для идентификации приложения в API ВКонтакте. У двух приложений ID не может быть одинаковым, поэтому вам следует поменять ID, который сейчас прописан в исходном коде задания.
Найдите в файле app/build.gradle строчку, содержащую applicationId «ru.ifmo.droid2016.vkdemo» и замените этот ID на свой новый уникальный ID. Можно просто добавить в конце свою фамилию или другое уникальное слово.
Получить отпечаток сертификата
Следуя инструкции https://vk.com/dev/android_sdk?f=1.1%20%D0%9E%D1%82%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BE%D0%BA%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0, определить отпечаток сертификата, установленного на компьютере, который вы используете для разработки. Это делается при помощи утилиты keytool , которая входит в состам JDK. В процессе выполнения задания нужно использовать debug сертификат (не release). Команда для получения сертификата выглядит приблизительно так (на Windows):
Дефолтный пароль для keystore: android
В выводе этой команды надо найти строчку вида
Из которой надо взять шестнадцатеричное значение, удалив все двоеточия — это и будет отпечаток сертификата, как он используется для идентификации приложения в API ВКонтакте: CD4C0748CD1AD063DB439F57245A4990C733218E .
Зарегистрировать приложение в API Вконтакте
- Зайти на страницу для разработчиков ВКонтакте: https://vk.com/dev
- Нажать «Создать приложение»
- Ввести любое название приложения, выбрать вариант «Standalone» и нажать «Подключить приложение»
- Пройти предложенную верификацию (через приложение или SMS — как вам нравится)
- После успешной верификации зайти в настройки зарегистрированного приложения и получить там ID приложения
- Там же в настройках приложения ввести
- Android application ID (которое вы прописали в app/build.gradle )
- Название активности ru.ifmo.droid2016.vkdemo.VkDemoActivity
- Ваш отпечаток сертификата (полученный ранее при помощи keytool)
- Не забыть нажать «Сохранить изменения»
Интеграция Vk SDK в коде приложения
- Указать зависимость на Vk SDK в файле app/build.gradle , добавив строчку в раздел dependencies (это пункт 2.1 инструкций, пункты 2.2 — 2.4 пропустить):
- В файл app/src/main/AndroidManifest.xml добавить рарешение на доступ в Интернет:
- Туда же в манифесте добавить запись об активности, которая используется Vk SDK для OAuth авторизации:
- Создать файл ресурсов vk.xml в папке app/src/main/res/values и прописать в нем ID приложения, полученный при регистрации приложения в API Вконтакте:
- В коде VkDemoApplication.onCreate добавить инициализацию Vk SDK:
После выполнения этой части задания приложение готово к использованию функционала Vk SDK, однако видимого результата не видно — еще никакой полезный код не написан. Можно убедиться, что приложение собирается и запускается.
Задание 2 — выполнение авторизации ВКонтакте
- Авторизация должна инициироваться из VkDemoActivity.onCreate
- В качестве параметра scope можно для начала использовать VKScopes.PHOTOS для доступа к фотографиям пользователя
- Код, обрабатывающий результат логина, должен быть написан в VkDemoActivity.onActivityResult
- В случае успешного логина вызвать метод VkDemoActivity.onLoggedIn(VKAccessToken token)
- В случае неуспешного логина вызвать метод VkDemoActivity.onLoginFailed(VKError error)
Если все работает правильно, то после логина должно быть показано короткое сообщение (тост) о результате логина.
Для того, чтобы не вызывать процедуру авторизации при каждом запуске приложения, токен можно сохранить в настройки и использовать при следующем запуске приложения:
- Сохранять токен следует при помощи вызова token.saveTokenToSharedPreferences(VkDemoActivity.this, Constants.KEY_TOKEN)
- Получить ранее сохраненный токен можно при помощи вызова VKAccessToken.tokenFromSharedPreferences(this, Constants.KEY_TOKEN)
Задание 3 — выполнение запроса с Vk SDK
После успешного логина можно выполнять запросы к API Вконтакте при помощи Vk SDK. При этом не понадобится писать код, выполняющий HTTP запросы или код JSON-парсеров — все это берет на себя Vk SDK.
Мы хотим запросить информацию о текущем залогиненном пользователе при помощи запроса users.get и из полученного ответа извлечь имя пользователя и URL его фотографии, и отобразить их на экране. Для отображения имени в верстке и в коде VkDemoActivity уже есть элемент:
а для фотографии:
Принцип выполнения запросов к API Вконтакте описан здесь: https://vk.com/dev/android_sdk?f=4.%20%D0%92%D1%8B%D0%B7%D0%BE%D0%B2%20%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2%20API. Запрос должен выполняться асинхронно в фоновом потоке, а результат должен обрабатываться в основном (main) потоке. Для асинхронного выполнения запроса можно использовать вызов VKRequest.executeWithListener — но тогда придется подумать о том, как сохранить результат выполнения запроса при смене конфигурации, чтобы при повороте экрана не выполнять запрос снова. Другой вариант — использовать механизм AsyncTaskLoader, и в нем в методе loadInBackground выполнять запрос при помощи вызова VKRequest.executeSyncWithListener .
- В методе VkDemoActivity.onLoggedIn(VKAccessToken token) написать код, который запустит асинхронное выполнение запроса users.get без параметра user_ids (запрос информации о текущем пользователе).
- Чтобы самим не писать парсер, нужно у объекта запроса VKRequest перед выполнением запроса вызвать метод:
тогда готовая модель ответа типа VKUsersArray окажется в поле ответа VKResponse.parsedModel .
- При получении результата выполнения запроса отобразить имя и фото пользователя, либо сообщение об ошибке.
Источник