SDK для Android

Как подключить

  1. Скачайте SberBusinessID_SDK_Android.zip, распакуйте и добавьте aar файл в папку libs вашего проекта.
  2. Перейдите в build.gradle вашего модуля.
  3. Добавьте зависимость в раздел dependencies:
implementation fileTree(dir: 'libs', include: ['*.aar'])
  1. Синхронизируйте ваш проект. Все, библиотека подключена.

Как инициализировать аутентификацию через SberBusinessID SDK

  1. Класс LoginManager содержит все методы для работы с аутентификацией по SberBusinessID. Значение параметра client_id можно получить в личном кабинете после заключения договора.
  2. Для инициализации аутентификации используйте метод login. Рекомендуется использовать класс LoginManager.Builder для минимизации ошибок при формировании запроса.

    • Все параметры являются обязательными
    • Подробное описание параметров state, nonce, scope и redicrect_uri можно найти в разделе Авторизация пользователя
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val builder = LoginManager.Builder(this)
    .clientId("584f9xuy05")
    .nonce("jecc5kb0tc")
    .scopes("openid")
    .state("ha6fxegld8")
    .redirectUri("app://merchant_app/")
    .build()

//Запуск аутентификации по SberbankBusinessID
builder.login()
  1. В результате выполнения метода login произойдет аутентификация пользователя и возврат по диплинку, переданному в поле redirect_uri.
  2. В манифесте приложения необходимо указать схему и хост возвратного 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>
  1. Для получения кода авторизации или информации об ошибке необходимо использовать метод 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()
}
  1. Для дальнейшей аутентификации необходимо передать полученные значения nonce и authCode на ваш бэкенд для межсерверного взаимодействия с ресурсами SberBusinessID.

Если значение параметра state, сгенерированное вами при формировании запроса, и значение state, возвращенное SberBusinessID, не совпадут, результат будет ошибочным, а в AuthResultModel.errorDescription вернется описание ошибки «invalid_state».

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней