SDK для Android
Как подключить
- Скачайте
SberBusinessID_SDK_Android.zip
, распакуйте и добавьте aar файл в папку libs вашего проекта. - Перейдите в build.gradle вашего модуля.
- Добавьте зависимость в раздел dependencies:
implementation fileTree(dir: 'libs', include: ['*.aar'])
- Синхронизируйте ваш проект. Все, библиотека подключена.
Как инициализировать аутентификацию через SberBusinessID SDK
Класс LoginManager содержит все методы для работы с аутентификацией по SberBusinessID. Значение параметра client_id можно получить в личном кабинете после заключения договора.
Для инициализации аутентификации используйте метод login. Рекомендуется использовать класс LoginManager.Builder для минимизации ошибок при формировании запроса.
- Все параметры являются обязательными
- Подробное описание параметров state, nonce, scope и redicrect_uri можно найти в разделе Authorization code.
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val builder = LoginManager.Builder(this)
.clientId("584f9xuy05")
.nonce("jecc5kb0tc")
.scopes("openid")
.state("ha6fxegld8")
.redirectUri("app://merchant_app/")
.build()
//Запуск аутентификации по SberbankBusinessID
builder.login()
В результате выполнения метода login произойдет аутентификация пользователя и возврат по диплинку, переданному в поле redirect_uri.
В манифесте приложения необходимо указать схему и хост возвратного deeplink. Они, в свою очередь, должны совпадать со значением redirect_uri, которое вы используете при взаимодействии с ресурсами SberBusinessID.
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="merchant_app"
android:scheme="app" />
</intent-filter>
</activity>
- Для получения кода авторизации или информации об ошибке необходимо использовать метод getAuthResult(intent) в LoginManager. Данный метод обработает ответ и вернет сущность AuthResultModel.
val result = builder.getAuthResult(intent)
/**
* Сущность ответа от SberBusinessID
* @property isSuccess true если ответ положительный и вход произведен удачно.
* @property nonce Значение, сгенерированное внешней АС для предотвращения атак
* повторения.
* @property authCode Код авторизации клиента.
* @property errorDescription Текст ошибки.
*/
class AuthResultModel(
var authCode: String? = null,
var nonce: String? = null,
var errorDescription: String? = null
) {
val isSuccess: Boolean
get() = authCode != null
}
6. Обработка intent.
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(savedInstanceState)
val result = manager.getAuthResult(intent)
tvResult.text = result.toString()
}
- Для дальнейшей аутентификации необходимо передать полученные значения nonce и authCode на ваш бэкенд для межсерверного взаимодействия с ресурсами SberBusinessID.
Если значение параметра state, сгенерированное вами при формировании запроса, и значение state, возвращенное SberBusinessID, не совпадут, результат будет ошибочным, а в AuthResultModel.errorDescription вернется описание ошибки «invalid_state».