Аутентификация
Протокол OAuth 2.0 использует короткоживущие токены с долговременной авторизацией (refresh-токены) вместо долгоживущих токенов. Refresh-токен позволяет длительное время использовать ваше приложение без необходимости повторного ввода имени пользователя и пароля. При этом исключается вероятность того, что данные авторизации пользователя будут скомпрометированы.
Протокол OAuth 2.0 используется для авторизации:
- через имя пользователя или email-адрес и пароль;
- через социальные сети.
При включении настройки регистрация и авторизация пользователя выполняются с помощью вызова методов API
Для настройки авторизации по протоколу OAuth 2.0:
- Настройте авторизацию по протоколу OAuth 2.0 для варианта Авторизации в Личном кабинете.
- Инициализируйте библиотеку.
Настройка авторизации по протоколу OAuth 2.0 для варианта Авторизации в Личном кабинете
- Перейдите к вашему проекту в Личном кабинете.
- Выберите пункт Авторизация в боковом меню.
- Нажмите Настроить в панели с вариантом авторизации.
- Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
- Нажмите Добавить OAuth 2.0.
- Укажите URI переадресации OAuth 2.0 и нажмите Подключить.
- Скопируйте и сохраните ID клиента.
Инициализация библиотеки
Для инициализации библиотеки добавьте следующую строку в ваш исходный код проекта Android, указав следующие параметры:
login-project-id
— ID варианта авторизации, который можно найти в разделе Настройки авторизации > ID варианта авторизации в Личном кабинете.oauth2-client-id
— ID клиента, полученный при настройке авторизации по протоколу OAuth 2.0 в Личном кабинете.
- kotlin
val loginConfig = LoginConfig.OauthBuilder()
.setProjectId("login-project-id")
.setOauthClientId("oauth2-client-id")
.build()
XLogin.init(applicationContext, loginConfig)
Для работы с refresh-токенами в библиотеке Login реализованы следующие методы:
XLogin.refreshToken
— обновляет токен.XLogin.getToken
— возвращает текущий токен.XLogin.isTokenExpired
— возвращаетtrue
если срок действия токена истек.
Была ли статья полезна?
- Store
- Payments
- Inventory
Вы можете интегрировать SDK с собственной системой авторизации. В этом случае необходимо реализовать идентификацию пользователя по custom ID (ID пользователя, сформированный на вашем сервере) для открытия внутриигрового магазина, проведения платежа и управления инвентарем.
Сценарий взаимодействия c серверами Иксоллы при использовании собственной системы авторизации:
- Ваш клиент отправляет на ваш сервер запрос на аутентификацию.
- Ваш сервер аутентифицирует пользователя и отправляет на сервер Иксоллы запрос на получение JSON Web Token (JWT) пользователя, передавая custom ID.
- Сервер Иксоллы возвращает JWT пользователя.
- Ваш сервер передает JWT пользователя клиенту.
- Полученный JWT пользователя используется методами SDK вместо авторизационного токена для открытия внутриигрового магазина, проведения платежа и управления инвентарем.
Чтобы использовать собственную систему авторизации совместно с продуктами Иксоллы:
- В Личном кабинете настройте серверный OAuth 2.0-клиент.
- Реализуйте получение серверного JWT.
- Реализуйте получение JWT пользователя.
- Реализуйте логику работы с внутриигровым магазином, покупками и инвентарем с использованием JWT пользователя.
Настройка серверного OAuth 2.0-клиента
- Откройте ваш проект в Личном кабинете и перейдите в раздел Авторизация.
- Нажмите Настроить в панели нужного варианта авторизации.
- На странице навигации перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
- Нажмите Добавить OAuth 2.0.
- Укажите URI переадресации OAuth 2.0.
- Установите флажок Серверная (соединение server-to-server).
- Нажмите Подключить.
- Скопируйте и сохраните ID клиента и секретный ключ.
Получение серверного JWT
В серверной части вашего приложения реализуйте метод для получения серверного JWT с использованием запроса Generate JWT. Запрос должен содержать следующие параметры:
grant_type
— тип JWT, передайте значениеclient_credentials
;client_secret
— секретный ключ OAuth 2.0-клиента, полученный при настройке серверного OAuth 2.0-клиента;client_id
— идентификатор OAuth 2.0-клиента, полученный при настройке серверного OAuth 2.0-клиента.
Получение JWT пользователя
В серверной части вашего приложения реализуйте метод для получения JWT пользователя с использованием запроса Auth by custom ID. Запрос должен содержать заголовок X-Server-Authorization: <server_JWT>
, где <server_JWT>
— серверный JWT, полученный на предыдущем шаге.
Использование JWT пользователя
Передайте JWT пользователя в метод XStore.init
и используйте методы SDK для открытия внутриигрового магазина, проведения платежа и управления инвентарем.
Реализуйте получение нового JWT пользователя после истечения его срока жизни. Рекомендуется получать новый токен в фоновом режиме, без повторного входа пользователя в приложение.
Была ли статья полезна?
Нативная авторизация позволяет пользователям войти в ваше приложение с помощью аккаунта социальной сети, настроенного на мобильном устройстве.
При первом входе пользователя запускается приложение социальной сети, которое запрашивает разрешение на аутентификацию пользователя. В дальнейшем аутентификация будет выполняться автоматически, без участия пользователя.
В настоящее время для SDK реализована нативная авторизация через следующие социальные сети:
Чтобы настроить нативную авторизацию:
- Настройте приложение в личном кабинете разработчика социальной сети:
- Для авторизации через Facebook:
- Зарегистрируйтесь и создайте новое приложение.
- Настройте страницу приложения в личном кабинете разработчика Facebook.
- Для авторизации через Google настройте проект в Google API Console.
- Для авторизации через WeChat:
- Зарегистрируйтесь и создайте новое мобильное приложение.
- Отправьте приложение на проверку.
- Для авторизации через QQ:
- Зарегистрируйтесь и создайте новое мобильное приложение.
- Отправьте приложение на проверку.
- Для авторизации через Facebook:
- Настройте авторизацию через социальные сети на стороне Иксоллы:
- Для Facebook и Google настройте социальные сети в Личном кабинете.
- Для WeChat и QQ обратитесь к аккаунт-менеджеру проекта.
- Установите библиотеки для авторизации через социальную сеть. Для этого откройте файл
build.gradle
вашего приложения и в разделе зависимостей добавьте следующие строки, где<version_number>
— необходимая версия библиотеки:- Для авторизации через Facebook:
- groovy
implementation 'com.xsolla.android:login-facebook:<version_number>'
- Для авторизации через Google:
- groovy
implementation 'com.xsolla.android:login-google:<version_number>'
- Для авторизации через WeChat:
- groovy
implementation 'com.xsolla.android:login-wechat:<version_number>'
- Для авторизации через QQ:
- groovy
implementation 'com.xsolla.android:login-qq:<version_number>'
- Инициализируйте библиотеку Login с указанием следующих параметров:
facebook_id
— Идентификатор приложения из личного кабинета разработчика Facebook;google_id
— Идентификатор клиента из Google API Console для веб-приложения;wechat_id
— AppID из личного кабинета разработчика WeChat;qq_id
— AppID из личного кабинета разработчика QQ.
Пример инициализации библиотеки при аутентификации через JWT:
- kotlin
val loginConfig = LoginConfig.JwtBuilder()
.setProjectId("login-project-id")
.setSocialConfig(XLogin.SocialConfig(
facebookAppId = "facebook_id",
googleServerId = "google_id",
wechatAppId = "wechat_id",
qqAppId = "qq_id"
))
.build()
XLogin.init(applicationContext, loginConfig)
Пример инициализации библиотеки при аутентификации через OAuth 2.0:
- kotlin
val loginConfig = LoginConfig.OauthBuilder()
.setProjectId("login-project-id")
.setOauthClientId("oauth2-client-id")
.setSocialConfig(XLogin.SocialConfig(
facebookAppId = "facebook_id",
googleServerId = "google_id",
wechatAppId = "wechat_id",
qqAppId = "qq_id"
))
.build()
XLogin.init(applicationContext, loginConfig)
- Для авторизации через WeChat доработайте код приложения:
- Добавьте в пакет
<your_package_name>.wxapi
классWXEntryActivity
, где<your_package_name>
— название пакета вашего приложения:
- Добавьте в пакет
- kotlin
package <your_package_name>.wxapi
import android.app.Activity
import android.os.Bundle
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.xsolla.android.login.social.LoginSocial
class WXEntryActivity : Activity(), IWXAPIEventHandler {
private lateinit var iwxapi: IWXAPI
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
iwxapi = WXAPIFactory.createWXAPI(this, LoginSocial.wechatAppId, false)
iwxapi.handleIntent(intent, this)
finish()
}
override fun onReq(req: BaseReq?) {
}
override fun onResp(resp: BaseResp) {
LoginSocial.wechatResult = resp
}
}
- Добавьте в файл
AndroidManifest.xml
следующий элемент:
- Добавьте в файл
- kotlin
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true">
Настройка страницы приложения в личном кабинете разработчика Facebook
- Перейдите к настройкам приложения в личном кабинете разработчика Facebook.
- Перейдите Настройки > Основное.
- Нажмите Добавить платформу и выберите Android.
- В поле Название пакета Google Play укажите имя пакета вашего Android-приложения.
- В поле Название класса укажите полное имя класса Activity по умолчанию.
- Сгенерируйте хеш-ключ и укажите его в поле Ключевые хеш-адреса.
- Нажмите Сохранить изменения.
Для дальнейшей настройки нативной авторизации вам понадобятся Идентификатор приложения и Секрет приложения, которые можно найти в настройках приложения в разделе Настройки > Основное.
Настройка проекта в Google API Console
- Перейдите в Google API Console.
- Нажмите Создать проект.
- Укажите Название проекта и Местоположение, нажмите Создать.
- Перейдите в созданный проект и в боковом меню нажмите Окно запроса доступа OAuth.
- Установите флажок Внешнее и нажмите Создать.
- Укажите необходимые параметры и нажмите Сохранить.
- В боковом меню выберите Учетные данные.
- Создайте клиент OAuth 2.0 для вашего Android-приложения:
- Нажмите Создать учетные данные и выберите пункт Идентификатор проекта OAuth.
- В поле Тип приложения укажите Android.
- Укажите Имя.
- В поле Название пакета укажите имя пакета вашего Android-приложения.
- Сгенерируйте SHA-ключ.
- В поле Контрольная сумма сертификата SHA-1 укажите SHA-ключ, сгенерированный на предыдущем шаге.
- Нажмите Создать.
- Нажмите OK.
- Создайте клиент OAuth 2.0 для веб-приложения:
- Нажмите Создать учетные данные и выберите пункт Идентификатор проекта OAuth.
- В поле Тип приложения укажите Веб-приложение.
- Укажите Имя.
- Нажмите Добавить URI в разделе Разрешенные URI перенаправления и укажите URI
https://login.xsolla.com/api/social/oauth2/callback
. - Нажмите Создать.
- Нажмите OK.
Для дальнейшей настройки нативной авторизации вам понадобятся Идентификатор клиента и Секретный код клиента, которые можно найти в настройках идентификатора клиента для веб-приложения.
Настройка социальных сетей для варианта авторизации в Личном кабинете Иксоллы
- Перейдите к вашему проекту в Личном кабинете.
- Нажмите Авторизация в боковом меню и перейдите в раздел Варианты авторизации > ваш вариант авторизации > Социальные сети.
- Для настройки авторизации через Facebook:
- Нажмите Редактировать в панели Facebook и измените статус на Отключен.
- В поле Application ID укажите Идентификатор приложения из личного кабинета разработчика Facebook.
- В поле Application Secret укажите Секрет приложения из личного кабинета разработчика Facebook.
- Нажмите Подключить.
- Для настройки авторизации через Google:
- Нажмите Редактировать в панели Google и измените статус на Отключен.
- В поле Application ID укажите Идентификатор клиента из Google API Console для веб-приложения.
- В поле Application Secret укажите Секретный код клиента из Google API Console для веб-приложения.
- Нажмите Подключить.
Была ли статья полезна?
Инвалидация токена позволяет повысить безопасность данных авторизации пользователя в вашем приложении. При включении настройки, с каждым входом пользователя в систему его предыдущий токен доступа становится недействительным и генерируется новый токен.
При использовании Login Unity SDK инвалидация существующего токена и генерация нового выполняется при вызове методов API with_logout
указано значение 1
.
Для применения инвалидации токена в вашем проекте Android необходимо в методах XLogin.login
, XLogin.startSocialAuth
и XLogin.finishSocialAuth
передавать параметр withLogout = true
.
Была ли статья полезна?
Авторизация по ID устройства позволяет пользователям начать работу с приложением на мобильном устройстве без ввода данных для регистрации. При первом входе в приложение по ID устройства новый аккаунт создается автоматически, при этом пользователю не требуется вводить имя пользователя, email-адрес или другие данные.
С помощью ID устройства вы можете реализовать авторизацию пользователя на одном или нескольких мобильных устройствах в фоновом режиме. Для этого пользователю потребуется привязать к уже существующему аккаунту ID устройства.
ID устройства генерируется платформой и доступно приложениям, установленным на мобильном устройстве. SDK получает значение ID с помощью API платформы и использует это значение для выполнения различных функций с помощью API Иксоллы. ID Android-устройства передается в константе android.provider.Settings.Secure.ANDROID_ID.
В SDK реализованы методы для выполнения перечисленных ниже функций.
Аутентификация
Название метода SDK | Описание |
---|---|
authenticateViaDeviceId | Аутентифицирует пользователя в приложении с помощью ID текущего устройства. |
Обновление аккаунта
Название метода SDK | Описание |
---|---|
linkEmailPassword | Добавляет к текущему аккаунту имя пользователя, email-адрес и пароль, которые можно использовать для аутентификации. |
createSocialAccountLinkingIntent | Привязывает к текущему аккаунту социальную сеть, которую можно использовать для аутентификации. |
Управление устройствами
Название метода SDK | Описание |
---|---|
getUsersDevices | Возвращает список устройств, привязанных к текущему аккаунту пользователя. |
linkDeviceToAccount | Привязывает указанное устройство к текущему аккаунту пользователя. |
unlinkDeviceFromAccount | Удаляет привязку указанного устройства к текущему аккаунту пользователя. |
Была ли статья полезна?
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.