跳转至

验证登录并获取用户信息

登录验证和用户信息检索 是一个使用从登录页面重定向的临时认证代码(state)验证登录信息的API,并返回用户信息。在返回用户信息时,它包括访问令牌和刷新令牌。

登录验证和用户信息检索 API 请求返回的值大致如下。

  • IdP 信息
  • 用户信息
  • 访问/刷新令牌
Note

登录验证成功后,需要用户信息或令牌信息的情况如下。

  • 对于已经成功验证网页登录并生成了 PlayerID 的用户,响应包含用户信息 (user_info)。但是,如果用户信息已更改或需要单独验证,可以通过调用 用户信息检索 API 来检查。
  • 如果需要访问/刷新令牌,则必须重新进行网页登录或在令牌过期之前通过 令牌刷新 API 进行更新。

请求 URL

环境 URL
生产 https://weblogin.withhive.com/token
沙盒 https://sandbox-weblogin.withhive.com/token
HTTP 方法 POST
内容类型 application/json

请求体

字段名称 类型 描述 必需
grant_type 字符串 OAuth 2.0 授权码流程 默认: authorization_code Y
state 字符串 登录后收到的临时授权码 (authorization_code) Y
client_id 字符串 在安全密钥设置中生成的 OAuth 2.0 客户端 ID。您可以在 Hive 控制台 应用中心 > 安全密钥设置 中查看。 Y
client_secret 字符串 在安全密钥设置中生成的 OAuth 2.0 客户端密钥。您可以在 Hive 控制台 应用中心 > 安全密钥设置 中查看。 Y
redirect_uri 字符串 这是重定向 URI 地址。它必须与 Hive 控制台 身份验证 > 身份验证环境设置 > 登录设置 中设置的 重定向 URI 匹配。 Y

请求体示例

{
  "grant_type": "authorization_code",
  "state": "1627881984263-jkx1B3GOY3EsJ",
  "client_id": "58b48cd3-df47-5b52-2627-3f9c8d01",
  "client_secret": "bec7760b237244c4c818d6174587d8e1",
  "redirect_uri": "https://community.withhive.com/hivesdk/login/redirect"
}

响应主体

字段名称 类型 描述 备注
code 整数 网页登录响应代码
appid 字符串 应用 ID
idp_index 整数 用于登录的 IdP 索引
  • 1: Hive
  • 2: Facebook
  • 3: Google
  • 9: Apple
idp_user_id 字符串 用于 IdP 登录的唯一标识符
enc_idp 字符串 IdP 信息的加密密钥 发出用于外部网站自动登录的令牌 密钥
user_info JSON 用户信息
user_info.auth_ver 字符串 认证服务器版本
  • v4: Auth v4
user_info.user_id 大整数 Auth v4 玩家 ID
user_info.user_idp_list 数组 关联的 IdP 列表 包含用户关联的 IdP 信息的列表
user_info.user_idp_list.player_id 大整数 关联的 IdP 列表 - Auth v4 玩家 ID
user_info.user_idp_list.idp_user_id 字符串 关联的 IdP 列表 - IdP 的唯一标识符
user_info.user_idp_list.idp_index 整数 关联的 IdP 列表 - IdP 索引
  • 1: Hive
  • 2: Facebook
  • 3: Google
  • 9: Apple
user_info.user_idp_list.idp_id 字符串 关联的 IdP 列表 - IdP ID 即使与其他 IdP 一起玩,GUEST 也是默认创建的
user_info.is_blocked 布尔值 使用暂停状态
  • true: 被暂停的用户
  • false: 正常用户
user_info.is_refund 布尔值 用户是否有资格获得退款再支付
  • true: 用户有资格获得退款再支付
  • false: 用户没有资格获得退款再支付
user_info.access_token 字符串 访问令牌 (JWT) - 非对称算法
  • 如果没有账户 (PlayerID),则不会发放。
  • 有效期:1小时
user_info.refresh_token 字符串 刷新令牌 (JWT) - 非对称算法
  • 如果没有账户 (PlayerID),则不会发放。
  • 有效期:30天

网络登录响应代码

代码 描述 备注
100 成功
1050 无效参数
1075 身份验证服务器通信错误
2011 没有项目信息
2013 项目处于终止状态
2021 用户尚未完成 IdP 身份验证或用户的令牌会话已过期
2023 用户的令牌信息异常
7000 OAuth2.0 安全密钥未生成 在 Hive 控制台中检查 应用中心 > 安全密钥设置
7001 OAuth2.0 客户端 ID 值缺失
7002 OAuth2.0 客户端信息不匹配
7003 找不到 OAuth2.0 客户端信息
7004 OAuth2.0 不支持的令牌颁发类型 检查请求体中的 grant_type
7005 OAuth2.0 重定向 URI 不匹配 检查请求体中的 redirect_uri
8001 OAuth2.0 JWT 令牌创建失败

响应体示例(成功 - 用户信息存在)

这是满足以下条件时返回的响应数据的示例。

  • 当网页登录成功完成时
  • 当 PlayerID 在认证服务器上创建时
{
  "code": 100,
  "appid": "com.com2us.hivesdk.ios.community.global.normal",
  "idp_index": 3,
  "idp_user_id": "105213591741718897220",
  "enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW",
  "user_info": {
    "auth_ver": "v4",
    "user_id": 20000018552,
    "user_idp_list": [
      {
        "player_id": 20000018552,
        "idp_user_id": "105213591741718897220",
        "idp_index": 3,
        "idp_id": "GOOGLE"
      },
      {
        "player_id": 20000018552,
        "idp_user_id": "0",
        "idp_index": 0,
        "idp_id": "GUEST"
      }
    ],
    "is_blocked": false,
    "is_refund": false,
    "access_token": "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImV4cCI6MTc0NTU2MTk4MywiaWF0IjoxNzQ1NTU4MzgzLCJhdXRoX3ZlciI6InY0In0.e4mCIirRpAni4A1ZEF3FDOFng3Da8hq6IqZmyyRQZsc7W3LfFi_id5TIQSDbvmagmT4GcwHztovpoYZxf8blwqES1lJmEVXsBBJ3qpEOAem0K9aVwY0zmOO3A0Eeh6Y0APABewNCpHiKPCMZwxSsMaUE56FfuYgnbhpsipR638VgyPniRVU-Bzcu0Pi2zo-5yUKbg2FCXex510fvZRxqGZPg8Rfhm-jXqAYuwALLIFf2ZykOWqVRFtczfPXwB6fLQrQvQeBnOYcHHnR1q8Fi-Rk_bQPsAffIemGvaC4vUeyx6Szzt_Gok1BsuF76lYZ5ogCn4lAlZ0SJLrgMM2-DNQ",
    "refresh_token": "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6InJlZnJlc2hfdG9rZW4iLCJleHAiOjE3NDgxNTAzODMsImlhdCI6MTc0NTU1ODM4MywiYXV0aF92ZXIiOiJ2NCJ9.fvXTfRDYhlk21EY-ngAXbQMgYM9f-rFYPBa_GMV3JDz3cy9wwGfPTnF-VO0WkpxzpPdbG1ZX0HAdIkT4kF873ee2d-g6-JeuIEy0SFcTMpdYWXnlOfsuZlFIkzCm0OB_mlnNo_wxXHvjHM_dFDF-SfK2r9_ga8yLOXDfLJeA4XUYGwwsG3XT9x5Vy8RlUcF2aeuf-2bXdLSD2NGssZh18RTayV2CNtGuX0kj-nABVVTzLWUqbwKSrIVXjlS76zxl3SisUW_pz97iM98yLLRdpe_56_VDPzKEqVmn4bCyhhlAT1LEdu_uudlBY7hSUX0cJzcLAtj_4GReuLU9SnvQpw"
  }
}

响应体示例(成功 - 无用户信息)

当满足以下条件时,返回的响应数据示例。

  • 如果网页登录成功完成
  • 即使在身份验证服务器上未创建 PlayerID,开发者也可以使用 IdP 标识符(idp_indexidp_user_id)作为用户的账户标识符来处理登录。但是,如果在没有用户信息的情况下进行登录,将不会有 PlayerID,因此无法使用 保持登录(SSO)
{
  "code": 100,
  "appid": "com.com2us.hivesdk.ios.community.global.normal",
  "idp_index": 3,
  "idp_user_id": "105213591741718897220",
  "enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}

响应体示例(失败)

这是在满足以下条件时返回的响应数据的示例。

  • 如果网页登录失败
{
  "code": 1050
}

发出用于外部网站自动登录的令牌{ #web-idp-token }

  • 在运行Hive跨平台启动器时,会传递相应的令牌值(web_idp_token)以实现自动登录。
  • web_idp_token是一个一次性令牌,每次启动游戏时都需要重新获取。
Note
  • 请注意出于安全原因不要暴露发送请求的 enc_idp 值。
  • 在进行 API 调用时,务必应用服务器到服务器。

请求 URL

环境 URL
生产 https://authcp.qpyou.cn/auth/get-web-idp-token
沙盒 https://sandbox-authcp.qpyou.cn/auth/get-web-idp-token
HTTP 方法 POST
内容类型 application/json

请求正文

字段名称 类型 描述 必需
appid 字符串 应用 ID
enc_idp 字符串 IdP 信息的加密密钥

请求正文示例

{
  "appid": "com.com2us.hivesdk.ios.community.global.normal",
  "enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}

响应体

字段名称 类型 描述 备注
result_code 整数 结果代码
result_msg 字符串 结果消息
data JSON 结果数据
data.web_idp_token 字符串 外部PC自动登录令牌

响应正文示例

{
  "result_code": 0,
  "result_msg": "SUCCESS",
  "data": {
    "web_idp_token": "c47e61856f04f0a6194ddcbabca70a7f10552d044181386e625676fd07a63aee5d2b162a78a55bad350ed58fb07b79be8fea1c786108307f32b602019f31ac8d"
  }
}

结果代码

结果代码 描述
0 成功
4000 无效的请求参数
4012 enc_idp 解密错误