身份验证

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

如何设置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令牌授权相同的方法。引擎在场景中首次初始化对象时,将调用Awake方法。该方法将检查当前刷新令牌的有效期。

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

要配置OAuth 2.0授权:

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

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

  1. 前往您的发布商帐户。
  2. 登录管理器部分单击打开,然后前往登录管理器项目
  3. 在登录管理器部分单击打开并设置
  4. 前往常规设置 > 授权
  5. OAuth 2.0认证部分单击连接
  6. 指定OAuth 2.0重定向URI并单击连接
  7. 复制并保存客户端ID

在Unity项目中设置资源

  1. 前往您的Unity项目。
  2. 在主菜单中单击Window > Xsolla > Edit Settings
  3. Inspector面板中:
    1. Authorization method字段中,选择OAuth2.0
    2. OAuth2.0 client ID字段中,指定在发布商帐户中设置OAuth 2.0时收到的客户端ID

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

  • IsOAuthTokenRefreshInProgress — 在刷新令牌过程中返回true,否则为false。
  • ExchangeCodeToToken — 用用户的认证代码换取一个有效的JWT。

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

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

如何使用自有登录系统

Notice
仅在使用以下资源时参考本方法详解:
  • Game Commerce
  • Cross-Buy

您可以将Game Commerce和Cross-Buy资源与您的自有登录系统集成。要进行该操作,请通过支付中心访问令牌在您的应用程序中实现用户身份认证。

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

  1. 您的客户端向您的服务器发送认证请求。
  2. 您的服务器授权用户并向艾克索拉服务器发送请求以接收支付中心访问令牌。
  3. 艾克索拉服务器返回支付中心访问令牌。
  4. 您的服务器将支付中心访问令牌传给客户端。
  5. SDK方法将收到的支付中心访问令牌用作授权令牌以打开游戏内商店、进行支付及管理物品库。

获取支付中心访问令牌

Note
如果使用PlayFab或Firebase授权系统,请使用艾克索拉用于BaaS的现成扩展来获取支付中心访问令牌。

在应用程序后端,请实现通过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请求:

Copy
Full screen
Small screen
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参考

Note
请求中只能使用上面列表中的参数。请勿传入其他API调用参数(例如custom_parameterspurchase等),它们不能用来接收授权令牌。

使用支付中心访问令牌

要使用支付中心访问令牌来打开游戏内商店,进行支付及管理物品库,请将令牌传入SDK方法中的XsollaLogin.Instance.TokenXsollaStore.Instance.Token属性。

授权令牌的使用示例请参见教程:

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

Note
与游戏内商店和物品库交互时支付中心访问令牌的有效期是距上次调用艾克索拉API之后1小时。如要更改支付中心访问令牌的有效期,请联系您的帐户经理。
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
隐藏

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

本机用户认证可以让用户通过其移动设备上配置的社交网络帐户来登录您的应用程序。

用户首次登录时,社交网络应用程序将启动并询问是否允许进行用户认证。允许后,未来的认证将自动进行,无需用户执行任何操作。

目前SDK已实现通过以下社交网络进行本机用户认证:

  • Google
  • Facebook
  • 微信
  • QQ

要配置本机用户认证:

  1. 创建适用于Android的Unity项目编译版本
  2. 在社交网络的开发者帐户中配置应用程序:
    1. 对于通过Facebook进行认证:
      1. 注册并创建一个新应用程序。
      2. 在您的Facebook开发者帐户中设置应用页面
    2. 对于通过Google进行认证,请在Google API Console中设置项目
    3. 对于通过微信进行认证
      1. 注册并创建一个新应用程序。
      2. 提交审核申请。
    4. 对于通过QQ进行认证:
      1. 注册并创建一个新应用程序。
      2. 提交审核申请。

  1. 在艾克索拉侧设置通过社交网络进行用户认证:
    1. 对于Facebook和Google,请在发布商帐户中设置社交网络连接
    2. 对于微信和QQ,请联系您的帐户经理进行设置。
  2. 为您的Unity项目设置资源

为Android创建Unity项目编译版本

  1. 前往您的Unity项目。
  2. 在主菜单中单击File > Build settings
  3. Platform面板中单击Android
  4. 单击Build
  5. 确保生成了散列密钥:
    1. 在主菜单中单击Window > Xsolla > Edit Settings
    2. 确保Android debug hash key字段显示散列密钥。

在接下来的本机用户认证配置中需用到:

  • File > Build settings中选择Android平台后在Inspector面板中找到的Package Name
  • Window > Xsolla > Edit Settings > Inspector > Android class name中找到的Android class name
  • Window > Xsolla > Edit Settings > Inspector > Android debug hash key中找到的Android debug hash key

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

  1. 前往Facebook开发者帐户中的项目设置。
  2. 前往设置 > 基本
  3. 单击添加平台,选择Android
  4. Google Play包名称字段中指定Unity项目中的Package Name
  5. 类名字段中指定Unity项目的Android class name
  6. 密钥散列字段中指定Unity项目的Android debug hash key
  7. 单击保存更改

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

在Google API Console中设置项目

  1. 前往Google API Console
  2. 单击新建项目
  3. 指定项目名称位置,然后单击保存
  4. 前往所创建的项目,然后单击侧边栏上的OAuth同意屏幕
  5. 选择外部,然后单击创建
  6. 指定必需参数,然后单击保存
  7. 在侧边栏上点击凭据
  8. 为您的Unity应用程序创建一个OAuth 2.0客户端:

    1. 单击创建凭据,选择OAuth客户端ID
    2. 应用类型字段中指定Android
    3. 指定名称
    4. 包名称字段中指定您Unity应用程序的Package Name
    5. SHA-1证书指纹字段中指定您Unity应用程序的Android debug hash key
    6. 单击创建
    7. 单击确定

  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. 单击连接

为Unity项目设置资源

  1. 前往您的Unity项目。
  2. 在主菜单中单击Window > Xsolla > Edit Settings
  3. 指定应用程序ID:
    1. Facebook App ID字段中指定Facebook开发者帐户中的应用编号
    2. Google server ID字段中指定Google API Console中的Web应用的客户端ID
    3. WeChat App ID中指定微信应用设置中的AppID
    4. QQ App ID中指定QQ应用设置中的AppID

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

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

本机用户认证可让玩家通过其所装的Steam应用程序进入您的应用程序。

要设置本机用户认证:

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

配置您的Unity项目

  1. 手动创建一个steam_appid.txt文件并在其中输入您在Steam中的应用ID。然后将该文件放在项目的Assets目录下。

Note
如果是从GitHub下载的资源,则可在Assets目录中找到该steam_appid.txt文件。该文件包含一个演示项目的Steam应用ID。

  1. 打开您的Unity项目。
  2. 在主菜单中,前往Window > Xsolla > Edit Settings
  3. Inspector面板:
    1. 勾选Use Steam authorization复选框。
    2. Steam App ID字段中,指定您在Steam中的应用ID。该值应与steam_appid.txt文件中的值相同。

配置事件处理

要通过Steam认证用户,应使用SteamAuth方法获取session ticket。然后在调用RequestTokenBy方法时传入收到的值。随后即可获得调用API时需使用的令牌。

确保通过Steam进行认证

  1. 创建适用于独立平台的Unity项目的编译文件。
  2. 启动Steam并登录。
  3. 启动您的应用程序。如果一切正确,将显示Steam弹出窗口。

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

如何设置令牌失效

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

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

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

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

  1. 在主菜单中,前往Window > Xsolla > Edit Settings
  2. Inspector面板中,勾选Enable JWT invalidation复选框。

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

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

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

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

设置SDK与启动器配合工作

  1. 在您的发布商帐户中设置启动器

Note
config.json文件中,请更改以下对象的值:
  • launcher_project_id — 指定在发布商帐户 > 启动器 > 常规设置 > 常规信息中找到的启动器ID
  • login_project_id — 指定发布商帐户 > 启动器 > 常规设置 > 验证中找到的登录管理器ID

  1. 自定义启动器UI

Notice
通过艾克索拉服务器进行SDK集成使用Commerce API调用,因此不支持启动器商店。

  1. 在您的应用程序中实现启动器授权逻辑
  2. 生成启动器安装文件和编译版本压缩包
  3. 创建应用程序编译版本
  4. 将应用程序编译版本上传至艾克索拉更新服务器

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

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

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

Note
获得的令牌用于供SDK方法打开游戏内商店、进行支付等。请将令牌传入XsollaLogin.Instance.TokenXsollaStore.Instance.Token属性。

创建应用程序编译版本

  1. 前往您的Unity项目。
  2. 在主菜单中单击Window > Xsolla > Edit Settings。在Inspector面板中:
    1. Project ID字段中指定在发布商帐户 > 项目设置 > 项目ID中找到的项目ID。
    2. Login ID字段中指定在发布商帐户 > 启动器 > 常规设置 > 验证中找到的登录管理器ID。

  1. 运行授权场景,令牌在其中得到处理。
  2. 在主菜单中单击File > Build settings,然后单击Add Open Scenes。确保授权场景添加为列表首项。
  3. 单击Build
  4. 在弹出窗口中指定放置所得编译版本的目录路径。

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
隐藏
上次更新时间: 2021年7月20日

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

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