自定义存储

如果使用自定义存储,可实现:

交互过程

您可以使用艾克索拉登录管理器小组件或您的应用程序(使用Login API调用)作为客户端。客户端与艾克索拉登录管理器服务器之间的交互流程如下:

  1. 客户端向艾克索拉登录管理器服务器发送请求。请求格式见JWTPassword端点的说明。
  2. 艾克索拉登录管理器服务器向您的服务器发送请求。请按照说明验证请求。
  3. 艾克索拉登录管理器服务器处理您服务器的响应并将结果返回给客户端。
  4. 客户端处理响应。

用户注册

  1. 客户端向艾克索拉登录管理器服务器发送Register new user请求。
  2. 艾克索拉登录管理器服务器发送请求至新用户URL。响应必须为此说明中所述的格式。

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_registration_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{
  "email": "john@gmail.com",
  "password": "123456"
}
curl --request POST \
  --url 'https://your.hostname/your_registration_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json' \
  --data '{"email":"john@gmail.com","password":"123456"}'

响应示例:

Copy
Full screen
Small screen
    {
        "attributes": [
          {
            "attr_type": "server",
            "key": "company",
            "permission": "private",
            "value": "facebook-promo"
          },
          {
            "attr_type": "server",
            "key": "custom-id",
            "permission": "private",
            "value": 48582
          }
        ],
        "your_name1": "your value1",
        "your_name2": "your value2",
        "your_name3": "your value3"
    }

    1. 用户数据写入艾克索拉数据库,并且email标记为未确认。用户将收到一封帐户验证邮件。
    2. 如果集成了登录管理器小组件,则用户将重定向到包含以下消息的页面:请按照发送至{email}的说明验证您的帐户

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

    1. 客户端向艾克索拉登录管理器服务器发送Auth by username and password请求。
    2. 艾克索拉登录管理器服务器发送请求至用户认证URL。响应必须为此说明中所述的格式。

    请求示例:

    Copy
    Full screen
    Small screen
    http
    • http
    • curl
    POST https://your.hostname/your_authentication_uri HTTP/1.1
    Authorization: Bearer {JWT}
    Content-Type: application/json
    
    {
      "email": "john@gmail.com",
      "password": "123456"
    }
    curl --request POST \
      --url 'https://your.hostname/your_authentication_uri' \
      --header 'authorization: bearer_JWT' \
      --header 'content-type: application/json' \
      --data '{"email":"john@gmail.com","password":"123456"}'

    响应示例:

    Copy
    Full screen
    Small screen
      {
          "attributes": [
            {
              "attr_type": "server",
              "key": "company",
              "permission": "private",
              "value": "facebook-promo"
            },
            {
              "attr_type": "server",
              "key": "custom-id",
              "permission": "private",
              "value": 48582
            }
          ],
          "your_name1": "your value1",
          "your_name2": "your value2",
          "your_name3": "your value3"
      }

      1. 艾克索拉登录管理器服务器生成一个用户JWT。
      2. 用户重定向到包含一个token查询参数的login_urltoken参数包含用户JWT。

      注:
      如果艾克索拉数据库中未写入该用户数据,则创建一个新用户。

      通过手机号进行免密认证

      1. 客户端打开一个认证表单让用户输入手机号。
      2. 用户输入手机号。
      3. 客户端向艾克索拉登录管理器服务器发送Start auth by phone number请求。
      4. 客户端显示让用户填写验证码的字段。
      5. 用户输入收到的验证码。
      6. 客户端向艾克索拉登录管理器发送Complete auth by phone number请求。
      7. 如果为首次用户授权,艾克索拉登录管理器服务器向通过手机进行无密码登录URL发送一个请求。响应必须符合此说明中所述的格式。

      请求示例:

      Copy
      Full screen
      Small screen
      http
      • http
      • curl
      POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
      Authorization: Bearer {JWT}
      Content-Type: application/json
      
      {
        "login": "+12025550140",
        "type": "phone"
      }
      curl --request POST \
        --url 'https://your.hostname/your_phone_authentication_uri' \
        --header 'authorization: bearer_JWT' \
        --header 'content-type: application/json' \
        --data '{"login":"+12025550140","type":"phone"}'

      响应示例:

      Copy
      Full screen
      Small screen
        {
            "attributes": [
              {
                "attr_type": "server",
                "key": "company",
                "permission": "private",
                "value": "facebook-promo"
              },
              {
                "attr_type": "server",
                "key": "custom-id",
                "permission": "private",
                "value": 48582
              }
            ],
            "your_name1": "your value1",
            "your_name2": "your value2",
            "your_name3": "your value3"
        }

        通过社交网络进行身份验证

        要在通过社交网络进行认证时获取用户数据,请在发布商帐户的登录管理器项目设置中指定社交帐户登录URL(在用户数据库 > 存储 > 自定义存储部分)。包含从社交网络获取的数据的请求将发送到该URL。

        认证流程:

        1. 客户端向艾克索拉登录管理器服务器发送Auth via social network请求。
        2. 用户登录到某个社交网络。
        3. 艾克索拉登录管理器服务器处理从该社交网络收到的用户数据并向社交帐户登录URL发送一个请求。响应必须为此说明中所述的格式。

        请求在临时令牌的Authorization: Bearer <JWT>头中包含数据。请求中传入的用户JWT包含如下数据:

        声明类型描述
        expUnix TimestampJWT的过期日期和时间。JWT寿命为7分钟。 必需
        iatUnix Timestamp使用该JWT时的日期和时间。 必需
        issstring签名JWT的服务,例如https://login.xsolla.com必需
        request_typestring常量:gateway_request必需
        xsolla_login_project_idstring (UUID)您发布商帐户的登录管理器项目ID。 必需
        emailstring用户邮箱地址。
        substring (UUID)写入在艾克索拉登录管理器服务器侧的用户ID。 必需
        usernamestring用户名。
        providerstring认证使用的社交网络的名称。 必需
        idstring社交网络中的用户ID。 必需

        令牌负载示例:

        Copy
        Full screen
        Small screen
        {
          "exp": 1573635020,
          "iat": 1573634600,
          "iss": "https://login.xsolla.com",
          "request_type": "gateway_request",
          "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
          "sub": "00000000-0000-0000-0000-000000000000",
          "email": "example@test.com",
          "username": "Smith707",
          "provider": "google",
          "id": "123",
        }

        请求示例:

        Copy
        Full screen
        Small screen
        http
        • http
        • curl
        POST https://your.hostname/your_social_authentication_uri HTTP/1.1
        Authorization: Bearer {JWT}
        Content-Type: application/json
        
        {}
        curl --request POST \
          --url 'https://your.hostname/your_social_authentication_uri' \
          --header 'authorization: bearer_JWT' \
          --header 'content-type: application/json'

        响应示例:

        Copy
        Full screen
        Small screen
          {
              "attributes": [
                {
                  "attr_type": "server",
                  "key": "company",
                  "permission": "private",
                  "value": "facebook-promo"
                },
                {
                  "attr_type": "server",
                  "key": "custom-id",
                  "permission": "private",
                  "value": 48582
                }
              ],
              "your_name1": "your value1",
              "your_name2": "your value2",
              "your_name3": "your value3"
          }

          用户密码重置

          1. 客户端向艾克索拉登录管理器服务器发送Reset password请求。
          2. 艾克索拉登录管理器服务器向用户发送一封密码重置确认邮件。
          3. 用户在邮件中确认密码重置后,将被重定向到输入新密码的页面。
          4. 用户输入新的密码。
          5. 艾克索拉登录管理器服务器向密码重置URL发送请求。响应必须为此说明中所述的格式。

          请求示例:

          Copy
          Full screen
          Small screen
          http
          • http
          • curl
          POST https://your.hostname/your_reset_uri HTTP/1.1
          Authorization: Bearer {JWT}
          Content-Type: application/json
          
          {
            "username": "john@gmail.com",
            "fields": {
              "password": "NewPa$$word1"
            }
          }
          curl --request POST \
            --url 'https://your.hostname/your_reset_uri' \
            --header 'authorization: bearer_JWT' \
            --header 'content-type: application/json' \
            --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'

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

          不想回答

          感谢您的反馈!

          继续阅读

          上次更新时间: 2022年11月14日

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

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