身份验证

通过方法详解文档了解高级设置。

如何设置OAuth 2.0认证

OAuth 2.0不使用长久有效令牌而使用短时有效令牌来提供长期用户认证(通过刷新令牌)。刷新令牌允许用户在一段时间内留在应用程序中而不必重新输入用户名和密码。这样可以避免用户认证数据泄露的风险。

设置OAuth 2.0通过以下方式授权:

  • 通过用户名或电子邮箱和密码
  • 通过社交网络
  • 通过Steam

如启用了该选项,则用户注册和认证通过调用Register new userJWT auth by username and password API调用进行。Login & Account System插件为OAuth 2.0授权提供与JWT令牌授权相同的方法。在FXsollaAuthToken结构中,刷新令牌在RefreshToken字段中指定。

注:
启用此设置不会改变用户在您应用程序中的认证过程。

要配置OAuth 2.0授权:

  1. 在发布商帐户中为登录管理器项目设置OAuth 2.0认证
  2. 在UE4项目中设置插件

在发布商帐户中设置登录管理器项目的OAuth 2.0认证

  1. 前往您的发布商帐户
  2. 在侧边栏中单击登录管理器
  3. 在登录管理器项目窗格中单击配置
  4. 前往安全性区块,然后选择OAuth 2.0部分。
  5. 单击添加OAuth 2.0
  6. 指定OAuth 2.0重定向URI,然后单击连接
  7. 复制并保存客户端ID

在虚幻引擎项目中设置插件

  1. 在虚幻编辑器中打开您的UE4项目。
  2. 前往Settings > Project Settings > Plugins > Xsolla Login
  3. 启用Use OAuth 2.0选项。
  4. Client ID字段中指定在发布商帐户中设置OAuth 2.0时收到的客户端ID

Login & Account System插件中实现了以下方法与刷新令牌交互:

  • RefreshToken — 令牌过期后刷新令牌。
  • ExchangeAuthenticationCodeToToken — 用用户的认证代码换取一个有效的JWT。

RegisterUserGetSocialAuthenticationUrlAuthenticateWithSessionTicket中的State参数用于OAuth 2.0认证过程中的额外用户验证。该参数用于防止可能的CSRF攻击

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
隐藏

如何使用自有授权系统

注意

仅在使用以下插件时参考本方法详解:

  • Game Commerce
  • Cross-Buy

Cross-Buy插件将于2022年3月淘汰。您可以继续使用该插件,但它将不再更新及补充新功能。建议您转移到Game Commerce插件,该插件包含配合艾克索拉产品使用的所有类和方法。

您可以将SDK与自有授权系统集成。方法是实现通过自定义ID(在您的服务器上生成的用户ID)来识别用户身份,以打开游戏内商店、进行支付及管理物品库。

使用自有授权系统与艾克索拉服务器的交互过程:

  1. 您的客户端向您的服务器发送认证请求。
  2. 您的服务器授权用户并向艾克索拉服务器发送请求以接收用户JSON Web令牌(JWT),并传入自定义ID。
  3. 艾克索拉服务器返回用户JWT。
  4. 您的服务器将用户JWT传给客户端。
  5. SDK方法使用收到的用户JWT而不是授权令牌来打开游戏内商店、进行支付及管理物品库。

要将自有授权系统与艾克索拉产品配合使用:

  1. 在您的发布商帐户中设置服务器OAuth 2.0客户端
  2. 实现获取服务器JWT
  3. 实现获取用户JWT
  4. 实现使用用户JWT与游戏内商店、购买项和物品库交互的逻辑。

注:
如果使用PlayFab或Firebase授权系统,请使用艾克索拉用于BaaS的现成扩展来获取用户JWT。

设置服务器OAuth 2.0客户端

  1. 发布商帐户中打开您的项目,然后前往登录管理器部分。
  2. 在登录管理器项目面板中单击配置
  3. 前往安全性区块,然后选择OAuth 2.0部分。
  4. 单击添加OAuth 2.0
  5. 指定OAuth 2.0重定向URI
  6. 勾选机密(建议用于服务器对服务器连接)复选框。
  7. 单击连接
  8. 复制并保存客户端ID和密钥。

获取服务器JWT

在应用程序的后端,实现一个方法通过生成JWT API调用来获取服务器JWT。请求必须包含以下参数:

注:
服务器JWT有效期是59分钟。

获取用户JWT

在应用程序的后端,实现一个方法使用通过自定义ID进行认证API调用获取用户JWT。请求必须包含X-Server-Authorization: <server_JWT>头,其中<server_JWT>是在上一步中获得的服务器JWT。

注:
用户JWT有效期是24小时。如要更改该有效期,请联系您的帐户经理或发送邮件至integration@xsolla.com

使用用户JWT

使用SDK方法打开游戏内商店、进行支付及管理物品库。使用SDK方法时,请传入用户JWT而不是授权令牌。

以下教程包含该令牌的使用示例:

实现用户JWT过期后重新获取的逻辑。建议在后台获取新令牌,这样用户就无须重新登录应用程序。

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
隐藏

如何设置通过社交网络进行本机用户认证

本机用户认证(Native authentication)允许玩家通过安装至设备的应用程序使用社交网络帐户进行登录。目前SDK已实现通过以下社交网络进行本机用户认证:

  • Google
  • Facebook

注:
通过社交网络进行本机用户认证在以下版本中提供:
  • Game Commerce插件0.5.7及更高版本(适用于UE4)
  • Login & Account System插件0.3.0及更高版本(适用于UE4)
  • Cross-Buy插件0.3.0及更高版本(适用于UE4)

要配置本机用户认证:

  1. 创建适用于Android的UE4项目编译版本

注:
在接下来的本机用户认证配置中,还会用到您Android应用程序的包名称(可在Android Package Name (‘com.YourCompany.Project’ [PROJECT] is replaced with project name)字段的Edit > Project Settings > Platforms > Android部分中找到)。
  1. 在艾克索拉侧设置通过社交网络进行用户认证:
    1. 对于Facebook和Google,请在发布商帐户中设置社交网络连接
    2. 对于微信和QQ,请联系您的客户成功经理或发送邮件至csm@xsolla.comcsm@xsolla.com进行设置。
  2. 为您的虚幻引擎项目设置SDK
  3. 在应用程序侧实现身份认证逻辑。

在Facebook开发者帐户中设置应用页面

  1. 前往Facebook开发者帐户中的项目设置。
  2. 前往设置 > 基本
  3. 单击添加平台,选择Android
  4. Google Play包名称字段中指定您Android应用程序的包名称。
  5. 类名字段中指定活动的完全限定类名称(默认值是com.epicgames.ue4.GameActivity)。
  6. 生成一个散列密钥并填入密钥散列字段中。
  7. 单击保存更改

在接下来的本机用户认证配置中,还会用到设置 > 基本部分中的应用编号应用密钥

在Google API Console中设置项目

  1. 前往Google API Console
  2. 单击新建项目
  3. 指定项目名称位置,然后单击保存
  4. 前往所创建的项目,然后单击侧边栏上的OAuth同意屏幕
  5. 选择外部,然后单击创建
  6. 指定必需参数,然后单击保存
  7. 在侧边栏上点击凭据
  8. 为您的Android应用创建一个OAuth 2.0客户端:
    1. 单击创建凭据,选择OAuth客户端ID
    2. 应用类型字段中指定Android
    3. 指定名称
    4. 包名称字段中指定您Android应用程序的包名称。
    5. 获取SHA密钥。
    6. SHA-1证书指纹字段中指定上一步中生成的SHA密钥。
    7. 单击创建
    8. 单击确定
  1. 为Web应用创建一个OAuth 2.0客户端:
    1. 单击创建凭据,选择OAuth客户端ID
    2. 应用类型字段中指定Web应用
    3. 指定名称
    4. 已获授权的重定向URl部分单击添加URI,并指定https://login.xsolla.com/api/social/oauth2/callback URl。
    5. 单击创建
    6. 单击确定

在接下来的本机用户认证配置中,还会用到Web应用的客户端ID设置中的客户端ID客户端密钥

在艾克索拉发布商帐户中设置登录管理器项目的社交网络连接

  1. 发布商帐户中打开您的项目。
  2. 在侧边栏中单击登录管理器,然后前往登录管理器项目 > 您的登录管理器项目 > 社交网络连接
  3. 要设置通过Facebook进行认证:
    1. Facebook面板中单击编辑,将状态更改为断开连接
    2. Application ID字段中指定Facebook开发者帐户中的应用编号
    3. Application Secret字段中指定Facebook开发者帐户中的应用密钥
    4. 单击连接
  1. 要设置通过Google进行认证:
    1. Google面板中单击编辑,将状态更改为断开连接
    2. Application ID字段中指定Google API Console中Web应用的客户端ID
    3. Application Secret字段中指定Google API Console中Web应用的客户端密钥
    4. 单击连接

为虚幻引擎项目设置SDK

  1. 前往您的UE4项目。
  2. 前往Settings > Project Settings > Plugins > Xsolla Login > Xsolla Login Android
  3. 勾选Allow Native Auth复选框。
  4. Facebook App Id字段中指定Facebook开发者帐户中的应用编号
  5. Google App Id字段中指定Google API Console中的Web应用的客户端ID
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
隐藏

如何设置通过Steam进行本机用户认证

本机用户认证允许玩家通过安装的Steam客户端进入您的应用程序。设置通过Steam进行本机用户认证后,还可向应用程序添加通过Steam进行支付的功能。

要设置本机用户认证:

  1. 在发布商帐户中设置通过Steam进行静默认证
  2. 配置您的UE4项目
  3. 配置事件处理
  4. 确保通过Steam进行认证

配置您的虚幻引擎项目

  1. 前往UE4项目的Config目录。
  2. DefaultEngine.ini文件中添加下方代码并在SteamDevAppId参数中指定您的Steam应用ID。
Copy
Full screen
Small screen
    [/Script/Engine.GameEngine]
    +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
    
    [OnlineSubsystem]
    DefaultPlatformService=Steam
    
    [OnlineSubsystemSteam]
    bEnabled=true
    SteamDevAppId=480
    
    [/Script/OnlineSubsystemSteam.SteamNetDriver]
    NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
    
    1. 在虚幻编辑器中打开项目。
    2. 前往Settings > Plugins > Online Platform
    3. Online Subsystem Steam模块,勾选Enabled复选框,然后单击Restart Now按钮保存设置并重新加载虚幻编辑器。

    配置事件处理

    1. 下图显示如何将节点添加至项目:
      要通过Steam认证用户,应使用GetSessionTicket方法获取session ticket。然后在调用AuthenticateWithSessionTicket方法时传入收到的值。随后即可获得调用API时需使用的令牌。
    1. 如要额外进行令牌验证,请添加ValidateToken方法回调(可选)。

    确保通过Steam进行认证

    1. 创建适用于独立平台的UE4项目的编译文件。
    2. 启动Steam并登录。
    3. 启动您的应用程序。如果一切正确,将显示Steam弹出窗口。
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏

    如何设置令牌失效

    令牌失效可提高应用程序中用户认证数据的安全性。如启用该选项,每次用户认证时旧令牌将失效,新令牌将取代旧令牌。

    注:
    您可以为使用JWT令牌的认证配置令牌失效。对于OAuth 2.0,令牌失效由协议本身提供,不必单独配置。

    使用SDK时,如果with_logout参数值为1,调用Auth by username and passwordAuth via social network API调用将使现有令牌失效并生成新令牌。

    要在您的UE4项目中启用令牌失效:

    1. 前往Settings > Project Settings > Plugins > Xsolla Login
    2. 启用Invalidate Existing Sessions选项。

    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏

    如何设置通过启动器授权进入应用程序

    您可以使用艾克索拉启动器向用户交付应用程序及其更新。启动器包含一个内置的授权工具。如要避免重复输入用户名和密码的需要,可设置通过启动器授权进入应用程序。

    注意
    要使用启动器,需配置登录管理器。不支持使用其他授权系统。

    设置SDK与启动器配合工作

    1. 在您的发布商帐户中设置启动器
    注:
    config.json文件中,请更改以下对象的值:
    • launcher_project_id — 指定在发布商帐户 > 启动器 > 常规设置 > 常规信息中找到的启动器ID
    • login_project_id — 指定发布商帐户 > 启动器 > 常规设置 > 验证中找到的登录管理器ID
    1. 自定义启动器UI
    注意
    通过艾克索拉服务器进行SDK集成使用Commerce API调用,因此不支持启动器商店。
    1. 在您的应用程序中实现启动器授权逻辑
    2. 生成启动器安装文件和编译版本压缩包
    3. 创建应用程序编译版本
    4. 将应用程序编译版本上传至艾克索拉更新服务器

    实现通过启动器进行授权的逻辑

    通过启动器在应用程序中进行授权的过程如下:

    1. 用户授权进入启动器。
    2. 用户安装并运行应用程序。
    3. 启动器运行该应用程序并通过命令行传入用户参数。授权令牌在xsolla-login-token参数中传递。
    4. 应用程序处理命令行参数并获取令牌。
    5. 应用程序验证收到的令牌。
    6. 应用程序在不显示授权页面的情况下自动完成用户授权。

    该逻辑的实现示例见演示项目的W_LoginDemo蓝图。

    注:
    获得的令牌用于供SDK方法打开游戏内商店、进行支付等。

    创建应用程序编译版本

    1. 前往您的UE4项目。
    2. Content Browser中,打开用户授权Map,令牌在其中得到处理。
    3. 在主菜单中前往Edit > Project Settings
    4. 前往Project> Maps & Modes,在Game Default Map字段中选择之前打开的授权Map。
    1. 前往Plugins > Xsolla Login
    2. Project ID字段中,指定在发布商帐户 > 项目设置 > 项目ID中找到的项目ID。
    3. Login ID字段中,指定在发布商帐户 > 启动器 > 常规设置 > 验证中找到的登录管理器ID。
    4. 根据创建的编译版本适用的平台,在主菜单中前往File > Package Project > Windows (64 bit)File > Package Project > Mac
    5. 在弹出窗口中指定放置所得编译版本的目录路径。
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏

    如何实现通过设备ID进行用户认证

    设备ID认证能让用户在无需输入注册数据的情况下在移动设备上使用应用程序。用户首次使用设备ID登录应用程序时将自动创建一个新帐户,用户无需输入用户名、邮箱地址或其他数据。

    注意
    通过设备ID创建的帐户只允许在当前移动设备上使用应用程序。更换Android或iOS设备或从iOS设备上卸载应用程序后将无法访问该帐户。如果要保存应用程序中的进度及在其他设备上使用该帐户,用户可以通过关联社交网络帐户或输入用户名、邮箱地址和密码来升级帐户

    您可以通过设备ID在后台模式下实现用户在一个或多个移动设备上的身份认证。要使用该功能,用户需将设备ID与现有帐户关联

    SDK支持在Android和iOS设备上通过移动设备的ID进行用户认证。

    获取设备ID

    设备ID由平台生成并可供该移动设备上安装的应用程序使用。SDK使用平台API获取ID值并使用该值通过艾克索拉API执行各种功能。

    iOS设备ID在UIDevice.identifierForVendor属性中传递。Android设备ID在android.provider.Settings.Secure.ANDROID_ID常量中传递。使用标准UE4 Get Device Id方法判断该ID。

    SDK方法

    SDK实现以下功能的方法:

    身份验证

    SDK方法名称描述
    AuthenticateViaDeviceId
    使用当前设备ID认证用户进入应用程序。

    帐户升级

    SDK方法名称描述
    LinkEmailAndPassword
    添加可用于身份认证的用户名、邮箱地址和密码到当前帐户。
    LinkSocialNetworkToUserAccount
    将可用于身份认证的社交网络关联至当前帐户。
    注意
    所列方法可用于升级通过任何可用方法创建的帐户(例如通过社交网络帐户或邮箱地址和密码创建)。

    设备管理

    SDK方法名称描述
    UpdateUsersDevices
    返回与当前用户帐户关联的设备的列表。
    LinkDeviceToAccount
    将指定设备关联至当前用户帐户。
    UnlinkDeviceFromAccount
    取消指定设备与当前用户帐户的关联。
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏
    上次更新时间: 2024年1月22日

    发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

    报告问题
    我们非常重视内容质量。您的反馈将帮助我们做得更好。
    请留下邮箱以便我们后续跟进
    感谢您的反馈!