身份验证
OAuth 2.0不使用长久有效令牌而使用短时有效令牌来提供长期用户认证(通过刷新令牌)。刷新令牌允许用户在一段时间内留在应用程序中而不必重新输入用户名和密码。这样可以避免用户认证数据泄露的风险。
设置OAuth 2.0通过以下方式授权:
- 通过用户名或电子邮箱和密码
- 通过社交网络
如果启用了此选项,则用户注册和认证通过调用
要配置OAuth 2.0授权:
- 在发布商帐户中为登录管理器项目设置OAuth 2.0认证。
- 初始化库。
在发布商帐户中设置登录管理器项目的OAuth 2.0认证
- 前往您的发布商帐户。
- 在侧边栏中单击登录管理器。
- 在登录管理器项目窗格中单击配置。
- 前往安全性区块,然后选择OAuth 2.0部分。
- 单击添加OAuth 2.0。
- 指定OAuth 2.0重定向URI,然后单击连接。
- 复制并保存客户端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)
Login库中实现了以下方法与刷新令牌交互:
XLogin.refreshToken
— 刷新令牌。XLogin.getToken
— 返回当前令牌。XLogin.isTokenExpired
— 如果令牌过期,返回true
。
本文对您的有帮助吗?
- Store
- Payments
- Inventory
您可以将Store、Payments和Inventory库与您的自有登录系统集成。要进行该操作,请通过支付中心访问令牌在您的应用程序中实现用户身份认证。
使用自有授权系统与艾克索拉服务器的交互过程:
- 您的客户端向您的服务器发送认证请求。
- 您的服务器授权用户并向艾克索拉服务器发送请求以接收支付中心访问令牌。
- 艾克索拉服务器返回支付中心访问令牌。
- 您的服务器将支付中心访问令牌传给客户端。
- SDK方法将收到的支付中心访问令牌用作授权令牌以打开游戏内商店、进行支付及管理物品库。
获取支付中心访问令牌
在应用程序后端,请实现通过HTTP POST请求来获取支付中心访问令牌的方法。
艾克索拉API使用基本HTTP认证。请求必须包含Authorization: Basic <your_authorization_basic_key>
头,其中<your_authorization_basic_key>
是按照Base64标准加密的merchant_id:api_key
。您可以在发布商帐户中找到参数值:
- 要查找
merchant_id
,请前往项目设置 > Webhooks > 商户ID部分。 - 要查找
api_key
,请前往公司设置 > API密钥部分。
HTTP请求:
- http
POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token
要获取令牌,请将以下参数传入请求正文:
参数 | 类型 | 描述 |
---|---|---|
settings | object | 带有自定义项目设置的对象。 |
settings.project_id | integer | 游戏的艾克索拉ID。可在发布商帐户中项目名称的旁边找到。 必需。 |
user | object | 带用户相关数据的对象。 |
user.id | object | 授权系统中的用户ID(对象)。 |
user.id.value | string | 用户ID。 必需。 |
user.email | object | 用户邮箱(对象)。 |
user.email.value | string | 用户电子邮箱。必须符合RFC 822协议标准。 必需。 |
user.name | object | 带有用户昵称相关数据的对象。 必需。 |
user.name.value | string | 用户昵称。 |
user.steam_id | object | 用户Steam ID(对象)。 |
user.steam_id.value | string | 用户Steam ID。如应用程序在Steam上发布,则为必需。 |
user.playfab_id | object | 用户PlayFab ID(对象)。 |
user.playfab_id.value | string | 用户PlayFab ID。如果应用程序使用PlayFab服务来发放商品,则为必需。 |
请求和响应示例见API参考。
custom_parameters
、purchase
等),它们不能用来接收授权令牌。使用支付中心访问令牌
要使用支付中心访问令牌来打开游戏内商店,进行支付及管理物品库,请将令牌传入XStore.init
方法。
实现令牌过期后重新获取支付中心访问令牌的逻辑。建议在后台获取新令牌,这样用户就无须重新登录应用程序。
本文对您的有帮助吗?
本机用户认证可以让用户通过其移动设备上配置的社交网络帐户来登录您的应用程序。
用户首次登录时,社交网络应用程序将启动并询问是否允许进行用户认证。允许后,未来的认证将自动进行,无需用户执行任何操作。
目前SDK已实现通过以下社交网络进行本机用户认证:
- 微信
要配置本机用户认证:
- 在社交网络的开发者帐户中配置应用程序:
- 在艾克索拉侧设置通过社交网络进行用户认证:
- 对于Facebook和Google,请在发布商帐户中设置社交网络连接。
- 对于微信和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>'
- 对于通过微信进行认证:
- 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中的Web应用的客户端IDwechat_id
— 微信开发者帐号中的AppIDqq_id
— QQ开发者帐号中的AppID
通过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)
- 要通过微信进行认证,请修改应用程序代码:
- 将
WXEntryActivity
类添加至<your_package_name>.wxapi
包,其中<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应用程序的包名称。
- 在类名字段中指定默认活动的完全限定类名称。
- 生成一个散列密钥并填入密钥散列字段中。
- 单击保存更改。
在接下来的本机用户认证配置中,还会用到设置 > 基本部分中的应用编号和应用密钥。
在Google API Console中设置项目
- 前往Google API Console。
- 单击新建项目。
- 指定项目名称和位置,然后单击保存。
- 前往所创建的项目,然后单击侧边栏上的OAuth同意屏幕。
- 选择外部,然后单击创建。
- 指定必需参数,然后单击保存。
- 在侧边栏上点击凭据。
- 为您的Android应用创建一个OAuth 2.0客户端:
- 单击创建凭据,选择OAuth客户端ID。
- 在应用类型字段中指定Android。
- 指定名称。
- 在包名称字段中指定您Android应用程序的包名称。
- 获取SHA密钥。
- 在SHA-1证书指纹字段中指定上一步中生成的SHA密钥。
- 单击创建。
- 单击确定。
- 为Web应用创建一个OAuth 2.0客户端:
- 单击创建凭据,选择OAuth客户端ID。
- 在应用类型字段中指定Web应用。
- 指定名称。
- 在已获授权的重定向URI部分单击添加URI,并指定
https://login.xsolla.com/api/social/oauth2/callback
URI。 - 单击创建。
- 单击确定。
在接下来的本机用户认证配置中,还会用到Web应用的客户端ID设置中的客户端ID和客户端密钥。
在艾克索拉发布商帐户中设置登录管理器项目的社交网络连接
- 在发布商帐户中打开您的项目。
- 在侧边栏中单击登录管理器,然后前往登录管理器项目 > 您的登录管理器项目 > 社交网络连接。
- 要设置通过Facebook进行认证:
- 在Facebook面板中单击编辑,将状态更改为断开连接。
- 在Application ID字段中指定Facebook开发者帐户中的应用编号。
- 在Application Secret字段中指定Facebook开发者帐户中的应用密钥。
- 单击连接。
- 要设置通过Google进行认证:
- 在Google面板中单击编辑,将状态更改为断开连接。
- 在Application ID字段中指定Google API Console中Web应用的客户端ID。
- 在Application Secret字段中指定Google API Console中Web应用的客户端密钥。
- 单击连接。
本文对您的有帮助吗?
令牌失效可提高应用程序中用户认证数据的安全性。如启用该选项,每次用户认证时旧令牌将失效,新令牌将取代旧令牌。
使用Login库时,如果with_logout
参数值为1
,调用
要在您的Android项目中使用令牌失效,需在XLogin.login
、XLogin.startSocialAuth
和XLogin.finishSocialAuth
方法中传入withLogout = true
参数。
本文对您的有帮助吗?
设备ID认证能让用户在无需输入注册数据的情况下在移动设备上使用应用程序。用户首次使用设备ID登录应用程序时将自动创建一个新帐户,用户无需输入用户名、邮箱地址或其他数据。
您可以通过设备ID在后台模式下实现用户在一个或多个移动设备上的身份认证。要使用该功能,用户需将设备ID与现有帐户关联。
设备ID由平台生成并可供该移动设备上安装的应用程序使用。SDK使用平台API获取ID值并使用该值通过艾克索拉API执行各种功能。Android设备ID在android.provider.Settings.Secure.ANDROID_ID常量中传递。
SDK实现下列功能的方法。
身份验证
SDK方法名称 | 描述 |
---|---|
authenticateViaDeviceId | 使用当前设备ID认证用户进入应用程序。 |
帐户升级
SDK方法名称 | 描述 |
---|---|
linkEmailPassword | 添加可用于身份认证的用户名、邮箱地址和密码到当前帐户。 |
createSocialAccountLinkingIntent | 将可用于身份认证的社交网络关联至当前帐户。 |
设备管理
SDK方法名称 | 描述 |
---|---|
getUsersDevices | 返回与当前用户帐户关联的设备的列表。 |
linkDeviceToAccount | 将指定设备关联至当前用户帐户。 |
unlinkDeviceFromAccount | 取消指定设备与当前用户帐户的关联。 |
本文对您的有帮助吗?
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。