验证登录并获取用户信息
登录验证和用户信息检索 是一个使用从登录页面重定向的临时认证代码(state
)验证登录信息的API,并返回用户信息。在返回用户信息时,它包括访问令牌和刷新令牌。
登录验证和用户信息检索 API 请求返回的值大致如下。
Note
登录验证成功后,需要用户信息或令牌信息的情况如下。
- 对于已经成功验证网页登录并生成了 PlayerID 的用户,响应包含用户信息 (
user_info
)。但是,如果用户信息已更改或需要单独验证,可以通过调用 用户信息检索 API 来检查。 - 如果需要访问/刷新令牌,则必须重新进行网页登录或在令牌过期之前通过 令牌刷新 API 进行更新。
请求 URL
请求体
字段名称 | 类型 | 描述 | 必需 |
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 : Hive2 : Facebook3 : Google9 : Apple
|
idp_user_id | 字符串 | 用于 IdP 登录的唯一标识符 | |
enc_idp | 字符串 | IdP 信息的加密密钥 | 发出用于外部网站自动登录的令牌 密钥 |
user_info | JSON | 用户信息 | |
user_info.auth_ver | 字符串 | 认证服务器版本 | |
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 : Hive2 : Facebook3 : Google9 : Apple
|
user_info.user_idp_list.idp_id | 字符串 | 关联的 IdP 列表 - IdP ID | 即使与其他 IdP 一起玩,GUEST 也是默认创建的 |
user_info.is_blocked | 布尔值 | 使用暂停状态 | |
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_index
,idp_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"
}
响应体示例(失败)
这是在满足以下条件时返回的响应数据的示例。
发出用于外部网站自动登录的令牌{ #web-idp-token }
- 在运行Hive跨平台启动器时,会传递相应的令牌值(web_idp_token)以实现自动登录。
- web_idp_token是一个一次性令牌,每次启动游戏时都需要重新获取。
Note
- 请注意出于安全原因不要暴露发送请求的 enc_idp 值。
- 在进行 API 调用时,务必应用服务器到服务器。
请求 URL
请求正文
字段名称 | 类型 | 描述 | 必需 |
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 解密错误 |