- ВКонтакте Android SDK
- Android studio интерфейс вконтакте
- Android studio интерфейс вконтакте
- Вконтакте представили SDK для Android
- На днях ВКонтакте в разделе для разработчиков выложили SDK для Android.
- Простой и удобный способ добавления социальных сетей в Андроид приложение на примере Вконтакте и Одноклассники
- Регистрация приложения в социальной сети
- Интеграция Вконтакте и Одноклассники в приложение
- Запросы к Социальным сетям
ВКонтакте Android SDK
Решили поделиться своими наработками по реализации ВКонтакте API для Android. Данное SDK позволяет быстро авторизоваться и вызывать методы API, например отправить запись на стену, получить список друзей пользователя и многое другое. Изначально библиотека разрабатывалась как ядро проекта Kate Mobile. Совсем недавно пришла идея оформить часть кода в ощедоступную библиотеку. На скорую руку вынести её в отдельный проект и теперь она доступна всем желающим. Сейчас реализованы основные методы API, пополняем по мере необходимости. Будем улучшать на основании полученного фидбэка. Если он будет.
SDK опубликовано на гитхабе https://github.com/thest1/Android-VKontakte-SDK. Распространяется по лицензии MIT. Вы можете её использовать в любых проектах, в том числе коммерческих. Можете её модифицировать. Ссылку на первоисточник желательно размещать по возможности.
Быстро понять принципы работы библиотеки вам поможет демо-проект AndroidVkSdkSample. В нём реализована авторизация и, в качестве примера, отправка записи на свою стену.
Чтобы подключить библиотеку к своему проекту, нужно выполнить следующие шаги:
- Импортировать проект AndroidVkSdk в Eclipse. AndroidVkSdk реализован как Android Library Project.
- Добавить в своём проекте ссылку на AndroidVkSdk.
- Убедиться что у вашего приложения есть разрешение на доступ в Интернет
Создать url авторизации и открыть его в WebView
Здесь в качестве API_ID должен быть указан ID вашего приложения, созданного на vk.com/developers.php
Дождаться когда webview будет перенаправлен на Auth.redirect_url. Распарсить redirect_url чтобы получить из него access_token. Для примера смотрите как это сделано в LoginActivity.java в проекте AndroidVkSdkSample.
Создать объект Api для выполнения запросов к серверу ВКонтакте:
Теперь можно выполнять запросы к серверу, например так:
Источник
Android studio интерфейс вконтакте
2) Запрос с параметрами.
VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS, "1,2"));
3) Вариант с http загрузкой (если при авторизации в scope был передан VK_PER_NOHTTPS).
VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS, "1,2"));
request.secure = NO;
4) Запрос с количеством повторений.
VKRequest request = VKApi.wall().post(VKParameters.from(VKApiConst.OWNER_ID, "-60479154", VKApiConst.MESSAGE, "Привет, друзья!"));
request.attempts = 10;
//or infinite
//postReq.attempts = 0;
Будет выполнено 10 запросов, пока не произойдет успех, или не будет возвращен API error
5) Загрузка произвольного метода API (нужно иметь в виду полученный scope).
VKRequest request = new VKRequest("friends.get", VKParameters.from(VKApiConst.FIELDS, "sex,bdate,city"));
final Bitmap photo = getPhoto();
VKRequest request = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo, VKImageParameters.jpgImage(0.9f)), 0, 60479154);
request.executeWithListener(new VKRequestListener() <
@Override
public void onComplete(VKResponse response) <
//Do complete stuff
>
@Override
public void onError(VKError error) <
//Do error stuff
>
@Override
public void attemptFailed(VKRequest request, int attemptNumber, int totalAttempts) <
//I don't really believe in progress
>
>);
SDK предусматривает возможность выполнения нескольких методов в один запрос.
1) Подготавливаются необходимые запросы:
VKRequest request1 = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo1, VKImageParameters.jpgImage(0.9f)), 0, 60479154);
VKRequest request2 = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo2, VKImageParameters.jpgImage(0.5f)), 0, 60479154);
VKRequest request3 = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo3, VKImageParameters.jpgImage(0.1f)), 0, 60479154);
VKRequest request4 = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo4, VKImageParameters.pngImage()), 0, 60479154);
VKBatchRequest batch = new VKBatchRequest(request1, request2, request3, request4);
batch.executeWithListener(new VKBatchRequestListener() <
@Override
public void onComplete(VKResponse[] responses) <
super.onComplete(responses);
String[] photos = new String[responses.length];
for (int i = 0; i < responses.length; i++) <
VKPhoto photoModel = ((VKPhotoArray) responses[i].parsedModel).get(0);
photos[i] = String.format("photo%s_%s", photoModel.owner_id, photoModel.id);
>
makePost(VKStringJoiner.join(photos, ","));
>
@Override
public void onError(VKError error) <
showError(error);
>
>);
Источник
Android studio интерфейс вконтакте
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-запроса с загрузкой файла.
Источник
Вконтакте представили SDK для Android
На днях ВКонтакте в разделе для разработчиков выложили SDK для Android.
Популярная социальная сеть ВКонтакте пополнила свой набор инструментариев для разработки приложений, в котором уже имеются Flash и Javascript SDK, а также SDK для iOS, еще одним — SDK для Android.
Эта библиотека включает в себя инструменты для авторизации, как при наличии на девайсе пользователя официального клиента, так и при его отсутствии, а также инструменты для облегчения составления/выполнения запросов и обработки ответов.
Не забыли ребята и о владельцах девайсов с неактуальными версиями Android на борту — тестовое приложение, поставляемое вместе с SDK, имеет требования Android 2.2+
Также не оставлен без внимания вопрос защиты.
Подробности под катом.
Где взять?
VK Android SDK доступен для скачивания на GitHub.
Как подключить?
SDK к проекту
В Eclipse, которым, к слову, я пользуюсь, а также в Android Studio, с использованием сборщика Gradle, VK SDK подключается также, как и любая другая библиотека, поэтому не стану на этом останавливаться. Скажу только, что для удобства я изменил структуру папок:
=>
Если же вы не используете Gradle в Android Studio, то следует переименовать подключаемый модуль из «main» в «vksdk».
В манифесте необходимо прописать activity com.vk.sdk.VKOpenAuthActivity.
Проект к ВКонтакте
Разработчики создали систему безопасности, благодаря которой другое приложение не сможет выдать себя за ваше.
- Во-первых, после создания standalone-приложения, в его настройках вы должны указать название пакета.
- Во-вторых, вы должны указать в настройках имя главной activity вашего приложения.
- В-третьих (это самое главное), вы должны указать отпечаток ключа вашего приложения, предварительно удалив двоеточия. Можно несколько, например, debug и release. Утилита keytool выдала мне три отпечатка — MD5, SHA1 и SHA256. ВКонтакт интересует SHA1.
Как использовать?
Авторизация
При запуске приложения нужно инициализировать SDK:
VKSdk.initialize(VKSdkListener listener, String appId, VKAccessToken token);
Авторизацию рекомендуется производить одним из следующих способов:
VKSdk.authorize(String. scope);
VKSdk.authorize(String[] scope, boolean revoke, boolean forceOAuth);
По умолчанию авторизация происходит через вконтакте клиент. Если оный на девайсе пользователя не установлен или forceOAuth == true, то страница авторизации открывается в отдельной activity.
Поскольку библиотека включает элементы интерфейса, то ей необходимо отслеживать происходящее на дисплее. Для этого используется класс VKUIHelper. Поэтому во всех activity нужно переопределить методы примерно так:
Выполнение запросов
Можно составить запрос, используя имеющуюся в SDK модель:
VKRequest request = VKApi.users().get();
Или непосредственно указать имя вызываемого метода:
VKRequest request = new VKRequest(«status.get»);
То же самое с параметрами:
VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS, «1,2»));
VKRequest request = new VKRequest(«friends.get», VKParameters.from(VKApiConst.FIELDS, «sex,bdate,city»));
Для загрузки фотографий предусмотрены специальные типы запроса — VKUploadAlbumPhotoRequest для загрузки в альбом и VKUploadWallPhotoRequest для загрузки на стену. Оба имеют по два конструктора:
При загрузке фото на свою стену или стену группы user_id == 0, иначе — id пользователя, на стену которого будем гадить загружать фото.
При загрузке фото на стену/в альбом группы group_id == id целевой группы, иначе group_id == 0 (например, загрузка фото в свой альбом).
В album_id, соответственно, идентификатор фотоальбома.
Что касается объекта VKUploadImage, то в его конструктор необходимо передать изображение в виде объекта Bitmap и объект VKImageParameters, представляющий тип изображения (png, jpg) и значение quality (для jpg).
Аналоги для аудиозаписей, видеозаписей и документов пока не реализованы, но я не вижу проблем с тем, чтобы сделать это самостоятельно. 🙂
Перед выполнением запроса можно изменить некоторые его параметры:
Выполняется запрос методом request.executeWithListener(VKRequestListener listener);
Ответ сервера (VKResponse) приходит в listener.
Пример оправки запроса:
Можно выполнить несколько запросов одним пакетом. Для этого создаем, так сказать, мультизапрос:
VKBatchRequest batch_req = new VKBatchRequest(VKRequest. requests);
Как видите, в одном пакете может быть любое количество запросов.
Выполняется мультизапрос также, как и единичный, только с другим слушателем:
Обработка ответов
Если в ответе ожидается объект, Java-представления которого пока нет в модели SDK, имеет смысл установить parseModel = false; и самостоятельно обрабатывать полученный JSON. Иначе достаточно привести полученный объект к необходимому типу.
Заключение
SDK Вконтакте для Android — довольно удобный и элегантный инструмент. Однако, конечно, ещё сырой. Файл-менеджмент пока представляет собой только загрузку фото. Аудио-, видеозаписи и документы пока в пролёте. Модель пока включает только Java-представления пользователя и фотографии. Однако уже имеются средства обработки капчи и ошибки валидации.
Библиотеке есть куда развиваться — а это значит, что можно в этом поучаствовать и вписаться в историю ВКонтакте.
Официальную документацию по SDK для Android можно почитать здесь.
Источник
Простой и удобный способ добавления социальных сетей в Андроид приложение на примере Вконтакте и Одноклассники
Во время разработки приложений на Андроид часто встает вопрос интеграции социальных сетей в приложение. Логин через социальную сеть, рассказать друзьям, просмотреть список друзей — встречаются почти в каждом приложении.
Для этого можно воспользоваться модулями библиотеки ASNE.
Используя модуль библиотеки вы подключите SDK или API выбранной социальной сети и интерфейс для наиболее часто используемых запросов к ней, тем самым сэкономив время и упростив добавление другой социальной сети. Благодаря использованию SDK, пользователь может залогиниться или расшарить запись через уже установленное приложение социальной сети. А добавить социальную сеть как модуль, если ее нет в разработанных, не составит труда — это легко сделать по аналогии с любым другим модулем.
В данной публикации я покажу, как можно легко добавить поддержку VK и Odnoklassniki в приложении под Android, используя соответствующие модули ASNE. В статье рассмотрен упрощенный пример, включающий добавления логина, записи с ссылкой на стену пользователя и вывода списка друзей.
Регистрация приложения в социальной сети
Для добавления социальной сети в приложение потребуется ключ для совершения запросов. Поэтому первым шагом необходимо зарегистрировать приложение — по ссылкам вы увидите краткое руководство по созданию приложения для:
- VK
- Odnoklassniki
Для продолжения работы потребуются следующие ключи, которые используются в SDK социальных сетей.
- VK App ID
- OK App ID
- OK Public Key
- OK Secret Key
Интеграция Вконтакте и Одноклассники в приложение
После создания нового проекта сохраним ключи в values/strings.xml:
Затем добавим uses-permission для работы с интернетом и activity, необходимую «Одноклассниками» для взаимодействия с приложением в манифест.
Теперь добавим зависимости для модулей ASNE, например, в Android Studio для этого необходимо:
Открыть Project Structure => выбрать модуль приложения и открыть Dependencies => Add new library dependency
Затем по запросу asne вы увидите все модули доступные в библиотеке и добавьте в зависимость asne-vk, asne-odnoklassniki:
Либо вручную добавьте зависимости в build.gradle.
Немного украсим наше приложение:
В главном фрагменте расположим 2 кнопки, отвечающие за логин в социальные сети.
Для обработки ответа после запроса логина переопределим в MainActivity.java метод onActivityResult.
При обработке запроса логина социальная сеть отправляет onActivityResult проверяем его и отправляем в SocialNetworkManager, который передаст его в соответствующую SocialNetwork.
Теперь интегрируем социальную сеть в MainFragment.java — это просто:
- Возьмем ключи социальных сетей из values.xml
Создадим SocialNetworks с соответствующими разрешениями:
Проверим существует ли SocialNetworkManager
- Если не существует зададим его и добавим в него SocialNetworks
Если SocialNetworkManager существует(задали в activity или другом фрагменте) — выберем все инициализированные социальные сети и установим им OnLoginCompleteListener
Теперь необходимо обработать ответ после инициации SocialNetworks
Весь исходный код onCreateView и onSocialNetworkManagerInitialized из MainFragment c инициацией социальных сетей.
Запросы к Социальным сетям
Для начала запросим логин в социальной сети, для этого потребуется лишь id
Код OnClickListener loginClick с проверкой состояния подключения к социальной сети, а если пользователь уже вошел через социальную сеть — откроем ProfileFragment.java
После обработки логина приложением социальной сети получим onLoginSuccess(int networkId) или onError(int networkId, String requestID, String errorMessage, Object data) — выведем соответствующее сообщение.
Откроем ProfileFragment.java с помощью метода:
В ProfileFragment.java получим идентификатор социальной сети из MainFragment.java
Теперь с помощью networkId мы выберем социальную сеть и запросим данные профиля текущего пользователя следующим образом:
не забудьте добавить OnRequestSocialPersonCompleteListener
После обработки запроса мы можем использовать полученный объект SocialPerson для заполнения профиля пользователя в приложении, либо вывести ошибку при неудаче
Для выхода из социальной сети необходимо использовать метод logout()
И, честно говоря, это все — добавили ВК и Одноклассники в приложение. Как оказалось это достаточно просто и быстро. Аналогично можно добавить и другие социальные сети Facebook, Twitter, Linkedin, Instagram или Google Plus лишь добавив соответствующую зависимость и добавив их в SocialNetworkManager
Конечно же вы можете использовать выше описанные методы для работы с ними
Но давайте разберем еще несколько запросов — поделиться ссылкой и вывод списка друзей
Давайте поделимся ссылкой с помощью социальной сети:
Для начала настроим кнопку
Для отправки ссылки на стену пользователя нам необходимо ее передать в Bundle
И конечно же обработать ответы
Итак в OnClickListener shareClick покажем пользователю простой диалог в котором спросим, хочет ли он поделиться ссылкой, и если да, отправим ее
И на стене пользователя успешно появилась ссылка с предпросмотром и описанием
Теперь выведем список друзей пользователя:
Получим SocialNetwork из идентификатора социальной сети и запросим список друзей
Используя модули библиотеки ASNE можно легко и быстро добавить любую популярную социальную сеть в приложение. Конечно же в библиотеке содержится больше методов которые возможно пригодятся в вашем приложении. А так же можно использовать любые методы SDK или API используя токен или объект SDK
Если данное приложение вам показалось простым, вы можете посмотреть реализацию всех методов библиотеки в демо для библиотеки
Так же вы можете изучить аналогичную статью по подключению Facebook, Twitter and LinkedIn на codeproject.com.
В данный момент библиотека стабильна и находится в состоянии добавления социальных сетей. Буду рад вашим советам или помощи в разработке.
В планах развития библиотеки:
- Описание добавления своего модуля — в вики репозитория(на самом деле все очень просто);
- Добавление китайских социальных сетей;
- Написания javdocа и тестов.
Источник