OAuth 2.0:连接

运行机制

艾克索拉登录管理器支持基于OAuth 2.0协议的用户认证。关于OAuth 2.0协议的详细信息见其官方网站

单击此处获取用于OAuth 2.0协议的艾克索拉登录管理器API方法的格式说明。

使用者

集成了艾克索拉登录管理器并使用艾克索拉PlayFab数据库的合作伙伴。

如何获取

  1. 将设置OAuth 2.0所需的参数发送给您的帐户经理。
  2. 更新您的项目集成。

发送OAuth 2.0的设置信息

将以下参数发送给您的帐户经理:

参数描述
scope限制客户端对用户数据的访问范围。 可能值:
  • offline,用于在调用Generate User JWT方法(其中grant_type=refresh_token)时更新用户JWT。必须将scope=offline传入注册或认证方法。
  • email,用于在通过社交网络认证用户时额外请求用户的邮箱地址。(请参阅高级诀窍)。
redirect_uri用于在成功获取了请求的响应后将用户重定向到的URL。确认用户数据的参数(codestate)在重定向时传入该URL。

为项目连接该协议后,帐户经理会将下述数据发送给您。调用API方法时需将值传入相应的参数:

  • client_id — 您的OAuth 2.0客户端ID。
  • client_secret — 您的OAuth 2.0 客户端密钥。

更新项目集成

更新项目设置的流程取决于登录管理器的集成类型:

通过小组件更新集成

  1. 如果是通过小组件集成登录管理器:
    • 对于小组件2.0:请在初始化代码中添加client_idresponse_typestateredirect_uri。此外,您还可以添加scope参数。redirect_uri参数中需指定HTTP/HTTPS方案,如https://example.com

示例:

<script>
const xl = new XsollaLogin.Widget({
  projectId: '[Login ID]',
  preferredLocale: 'en_US',
  clientId: '[client_id]',
  responseType: 'code',
  state: '[custom_state]',
  redirectUri: '[redirect_uri]'
});
</script>

    • 对于更早版本的小组件:请在初始化代码中添加redirect_uriclient_id参数。redirect_uri参数中需指定HTTP/HTTPS方案。

示例:

<script type="text/javascript">
XL.init({
  projectId: '[Login ID]',
  callbackUrl: '[callbackUrl]',
  locale: 'en_US',
  redirectUri: '[redirect_uri]',
  clientId: '[client_id]'
});
</script>

  1. 使用Generate User JWT方法在用户成功认证后获取一个JWT。获取JWT所必需的code参数会在用户认证或注册后传入redirect_uri

示例:

POST https://login.xsolla.com/api/oauth2/token

Headers:
Content-Type: application/x-www-form-urlencoded

Body:
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=authorization_code&redirect_uri=https://my-website.com/callback

通过艾克索拉登录管理器API更新集成

使用下列用于OAuth 2.0协议的API方法来认证用户。如果已集成了用于JWT协议的方法,请通过调用OAuth 2.0方法来替代。

注册

使用Register方法来添加新用户。

示例:

POST https://login.xsolla.com/api/oauth2/user?response_type=code&client_id=11&scope=offline&state=rr21112rrr&redirect_uri=https://my-website.com/callback

Headers:
  Content-Type: application/json

Body:
{
  "username": "John",
  "password": "password123",
  "email": "john@gmail.com"
}

通过用户名和密码进行认证

使用Auth by Username and Password方法获取code参数。

示例:

POST https://login.xsolla.com/api/oauth2/login?response_type=code&client_id=11&scope=offline&state=rr21112rrr&redirect_uri=https://my-website.com/callback

Headers:
  Content-Type: application/json

Body:
{
  "username": "John",
  "password": "password123"
}

使用获取JWT方法传递JWT的code

通过社交网络帐户进行认证

使用Auth via Social Network方法获取code参数。

示例:

GET https://login.xsolla.com/api/oauth2/social/google/login_redirect?response_type=code&client_id=11&scope=offline&state=rr21112rrr&redirect_uri=https://my-website.com/callback

使用获取JWT方法传递JWT的code

获取JWT

使用包含grant_type=authorization_code参数的Generate User JWT方法获取用户JWT。获取JWT所必需的code参数会在用户认证或注册后传入redirect_uri

示例:

POST https://login.xsolla.com/api/oauth2/token

Headers:
Content-Type: application/x-www-form-urlencoded

Body:
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=authorization_code&redirect_uri=https://my-website.com/callback