Библиотека которая берет на себя ответственность за регистрацию аккаунта, логина и всех операций связанных с авторизацией. Самостоятельно создает и показывает нужные фрагменты. Реализует удобный интерфейс обратного вызова. Управляет сценарием ошибки сети. Требует очень мало кода
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.ivanov.tech.connection.Connection;
import com.ivanov.tech.session.Session;
...
//Init before call checkApiKey. It just init App Preferences, where are stored api-key and user_id
Session.Initialize(getApplicationContext());
...
Session.checkApiKey(getActivity(), getSupportFragmentManager(), R.id.main_container, new Connection.ProtocolListener() {
@Override
public void onCanceled() {
//Приложение не запустится, пока пользователь не будет авторизован
finish();
}
@Override
public void isCompleted() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.main_container, new FragmentDemo())
.commit();
}
});
...
Аргументы:
getActivity
- контекст активитиgetFragmentManager
-supportFragmentManager
из actionbarsherlock (Внимание! Не путайте с нативным getFragmentManager)R.id.main_container
- передается layout используемый в качестве окна активити, тогда диалог будет показан на весь экран. Если передать другой layout, то в качестве окна диалога будет использован переданный вами layoutjava new ProtocolListener
- реализация интерфэйсаProtocolListener
для обратного вызова. Тут передается операция (другими словами ваш код)
Описание
При вызове checkApiKey
, программа проверяет: существует ли api-key, если существует отправляет его на сервер. Если сервер решит, что api-key актуальный, то программа вызывает метод isCompleted
переданного ProtocolListener
объекта;
Иначе создается и открывается фрагмент FragmentRegister
, чтобы создать новый аккаунт и получить api-key:
Если у вас уже существует аккаунт, то можете просто выполнить логин. Для этого кликните кнопку "I've an account already", тогда откроется фрагмент FragmentLogin
:
Как только используя фрагменты FragmentLogin
и FragmentRegister
в конце-концов получите apikey, будет вызван метод isCompleted
.
ВАЖНО! Нужно обязательно сделать инициализацию, вызвав Session.Initialize(getApplicationContext())
в onCreate
методе Activity
. В качестве параметра передается ApplicationContext
Вызов checkApiKey
как правило нужно делать при старте приложения. Автор рекомендует делать это внутри onCreate
первого запустившегося активити, как показано в DemoActivity.java. Таким образом пользователь войдет в приложение, только если пройдет авторизацию (обратите внимание на finish()
внутри onCanceled
переданного ProtocolListener
объекта)
Программа отправляет на сервер пароль и логин, в ответ получает sha1 ключ (apikey
). Полученный ключ используется вместо логина и пароля, во всех следующих сессиях
При повторном отправлении логина и пароля(даже если будет отправлен из другого устройства), имеющийся sha1 ключ становится неактуальным. На сервере создается один apikey
на один аккаунт. Использовать один и тот же аккаунт в двух разных устройствах одновременно - не получится
Концепцию Api-Key хорошо объясняет Ravi Tamada в своем уроке
ВНИМАНИЕ! Данная библиотека - это реализация клиентской части системы авторизации пользователя. Это только клиентская часть приложения, для того чтобы она работала требуется серверная часть.
Серверную часть вы можете видеть в репозитории автора на GitHub. Есть инструкция по самостоятельному запуску и настройке сервера
- ActionBarSherlock
- Volley
- Connection- библиотека автора. Используется как подмодуль
- Для клонирования репозитория, автор рекомендует использовать командную строку, вместо EGit Eclipse. Т.к. проект содержит настройки workspace в папке репозитория. В командной строке выполните:
$ git clone git://github.com/Igorpi25/Session.git
$ git submodule init
$ git submodule update
- В Eclipse выберите в качестве workspace рабочий каталог только-что клонированного репозитория. Eclipse автоматически найдет репозиторий внутри каталога
- Добавьте режим "Git Perspective" в настройках Eclipse. Для этого, перейдите в меню
Window->Perspective->Open Prespective->Other
. В появившемся списке выберитеGit
, и нажмите ОК - В режиме "Git Perspective", найдите окно "Git Repositories". Кликните правой кнопкой мыши на ваш репозиторий, и нажмите
ImportProjects...
. ВыберитеImport Existing eclipse project
, и нажмите "Далее". Поставьте галочку на проектах "Session", "Connection" и "ActionBarSherlock" и нажмите "Finish" - Перейдите в режим "Java Perspective", и удостоверьтесь что проекты импортированы правильно. "Connection" и "ActionBarSherlock" должны быть добавлены в проект "Session" в качестве модуля. Для работы проекта требуется Android SDK, API Level 21, зайдите в SDK Manager - скачайте и установите
- В файле Session.java в "com.ivanov.tech.session" напишите правльный домен для
testApiKeyUrl
,registerUrl
,loginUrl
- Выполните Project->Clean
- Убедитесь что серверная часть настроена правильно
- Можно запускать
- Выполните все из "Добавление и запуск проекта в Eclipse"
- Сделайте проект Session библиотекой
- Добавьте проект Session в качестве библиотеки в ваш проект
- В манифесте добавьте строки:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
- Добавьте
Session.Initialize(getApplicationContext())
вonCreate
вашего Activity, как это сделано вDemoActivity.java
вcom.ivanov.tech.session
Пример использования вы можете видеть в проекте Profile