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

ВКонтакте Android SDK

Решили поделиться своими наработками по реализации ВКонтакте API для Android. Данное SDK позволяет быстро авторизоваться и вызывать методы API, например отправить запись на стену, получить список друзей пользователя и многое другое. Изначально библиотека разрабатывалась как ядро проекта Kate Mobile. Совсем недавно пришла идея оформить часть кода в ощедоступную библиотеку. На скорую руку вынести её в отдельный проект и теперь она доступна всем желающим. Сейчас реализованы основные методы API, пополняем по мере необходимости. Будем улучшать на основании полученного фидбэка. Если он будет.

SDK опубликовано на гитхабе https://github.com/thest1/Android-VKontakte-SDK. Распространяется по лицензии MIT. Вы можете её использовать в любых проектах, в том числе коммерческих. Можете её модифицировать. Ссылку на первоисточник желательно размещать по возможности.

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

Чтобы подключить библиотеку к своему проекту, нужно выполнить следующие шаги:

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

Создать url авторизации и открыть его в WebView

Здесь в качестве API_ID должен быть указан ID вашего приложения, созданного на vk.com/developers.php
Дождаться когда webview будет перенаправлен на Auth.redirect_url. Распарсить redirect_url чтобы получить из него access_token. Для примера смотрите как это сделано в LoginActivity.java в проекте AndroidVkSdkSample.

Создать объект Api для выполнения запросов к серверу ВКонтакте:

Теперь можно выполнять запросы к серверу, например так:

Источник

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

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);
>
>);

Источник

Подключаем ВКонтакте SDK для Xamarin.Forms

В прошлой статье мы рассмотрели вопрос с подключением нативных SDK от Facebook в ваших приложениях на Xamarin.Forms для удобной авторизации пользователей. Сегодня, как и обещали, рассмотрим подключение нативных SDK для социальной сети ВКонтакте. Новый SDK будет подключаться к проекту, который мы описывали в прошлой статье.

Создаем приложение во ВКонтакте

В целом, процесс интеграции ВКонтакте будет сильно напоминать работу с Facebook, так что смело заходите на страницу управления приложениями.

Нажимаем «Создать приложение» и выбираем «Standalone-приложение».

Далее идём в Настройки и вводим данные о приложении. «Отпечаток сертификата» это Key Hashes, полученные нами в прошлой статье.

На этом подготовительная часть завершена.

Подключаем ВКонтакте SDK к проектам iOS и Android

Для Xamarin доступно достаточно много готовых bindings, однако полноценный ВКонтакте SDK появился совсем недавно. Библиотека какое-то время пребывала в стадии beta и сейчас готова к использованию. Большое спасибо Matthew Leibowitz!

Подключаем в iOS

Вносим правки в Info.plist . Расширяем CFBundleURLTypes значениями для ВКонтакте:

Добавляем новые LSApplicationQueriesSchemes :

И также новый домен в NSAppTransportSecurity :

После этого вносим правки в AppDelegate.cs .

На этом первичная инициализация iOS завершена.

Подключаем в Android

А вот для Android придётся дополнительно переопределить свой класс Application для корректной инициализации SDK.

Теперь добавим ID приложения в strings.xml :

Добавим немного кода в AndroidManifest.xml между … :

И завершим расширением MainActivity :

Интегрируем с Xamarin.Forms

По аналогии с Facebook, мы создадим свой интерфейс в PCL-проекте для работы с новым SDK.

Реализация для iOS

Для iOS реализация будет выглядеть следующим образом:

Реализация для Android

Для Android тоже ничего необычного.

Подключаем в Xanarin.Forms

Всё. ВКонтакте работает!

Напоминаем, что для публикации приложений (чтобы кто-нибудь кроме вас мог авторизоваться) необходимо выполнить дополнительные действия для каждой социальных сети.

Используем

Сегодня мы научились авторизовать пользователей, используя нативные ВКонтакте SDK. Если вам требуется более широкий функционал по работе с этой социальной сетью, то рекомендуем изучить примеры самого Matthew.

Полный код проекта с подключенными нативными SDK для Facebook и ВКонтакте можете найти по адресу.

В следующей статье мы рассмотрим универсальные способы авторизации пользователей через OAuth в приложениях Xamarin.Forms. Оставайтесь на связи, задавайте ваши вопросы в комментариях и вступайте в группу Xamarin Developers в Telegram.

Об авторе

Вячеслав Черников — руководитель отдела разработки компании Binwell. В прошлом — один из Nokia Champion и Qt Certified Specialist, в настоящее время — специалист по платформам Xamarin и Azure. В сферу mobile пришел в 2005 году, с 2008 года занимается разработкой мобильных приложений: начинал с Symbian, Maemo, Meego, Windows Mobile, потом перешел на iOS, Android и Windows Phone.

Статьи Вячеслава вы также можете прочитать в блоге на Medium.

Xamarin Meetup: Сложные интерфейсы в Xamarin.Forms

Если вы хотите пообщаться с сообществом Xamarin Developers, а также лично с Вячеславом, 9 марта в Москве пройдёт митап по теме «Сложные интерфейсы в Xamarin Forms».

18:00 — 18:30 Регистрация
18:30 — 19:30 Вячеслав Черников // Подключение RecyclerView/UICollectionView для вёрстки сложных интерфейсов
19:30 — 19:40 Кофе-брейк
19:40 — 20:40 Юрий Невалённый // Коллекции и списки на Xamarin Forms, паттерны виртуализации и быстрые ячейки (Android, iOS, Windows)

Источник

Вконтакте представили 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 можно почитать здесь.

Источник

Читайте также:  Андроид смартфон отличие что такое
Оцените статью