WEB跳转免登
业务场景
- 用户在游戏内跳转到官网页面时,通过传输加密的linkToken实现免登逻辑
注意事项
- 对接参数和 demo 包里的示例参数,不要混用
流程图
参数说明
参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
appId | int | 是 | 发行侧给的appId |
deviceType | int | 是 | 1:安卓2:iOS |
openId | string | 是 | 发行侧的openId,应用内登录时通过发行客户端获取 |
serverId | string | 是 | 区服id |
serverName | string | 否 | 区服名 |
roleId | string | 是 | 角色id |
roleName | string | 否 | 角色名 |
roleLevel | string | 否 | 角色等级 |
vipLevel | string | 否 | vip等级 |
timestamp | long | 是 | 时间戳,毫秒级 |
签名规则
对参数体(json格式字符串)进行加密,加密算法为 AES-ECB,128位,填充模式为 PKCS7Padding,密钥为 CP 服务端分配的 appKey
调试示例
import cn.hutool.crypto.SecureUtil;
public class LoginExample {
public static void main(String[] args) {
Map<String, Object> params = Maps.newLinkedHashMap();
params.put("appId", 10070);
params.put("deviceType", 1);
params.put("openId", "12345678912345678912345");
params.put("serverId", "123");
params.put("serverName", "1区");
params.put("roleId", "123");
params.put("roleName", "小明");
params.put("roleLevel", "1");
params.put("vipLevel", "1");
params.put("timestamp", 1234567890000L);
String appKey = "348s4af1b8kdo892";
String data = JSONUtil.toJsonStr(params);
System.out.println(data);
System.out.println(SecureUtil.aes(appKey.getBytes()).encryptHex(data));
}
// 加密体:{"appId":10070,"deviceType":1,"openId":"12345678912345678912345","serverId":"123","serverName":"1区","roleId":"123","roleName":"小明","roleLevel":"1","vipLevel":"1","timestamp":1234567890000}
// 加密结果:353260ca1b766caa4bb16f20d07ac7bfe5de68865b715f3f6cfa15221c24138e643cb0af5ed276bedb1ed3902274e1da39f127d14097a16e2e9525b54cba94a89e9c05c0cc78475d5b6deef6096bd4753f2fd9f5cc1b0d45e5438b808d39fdfd57c40fd38afba5d40d7a7b65c77e03edb3d25a4f55112cd2bfc1df070f4bc383c298946c9d9d3fd84867740caa1968ca36fadbe072a9448063e12d608dabdd1bd066d1ca4c1f2e97299b1bc8ecccbf8d58a338c0be034956a2207169e7e4a3f7af9200e971ffa2d45ab88ddfc6b2a6b6
}
## 使用方式
游戏内打开打开官网时,将 appId 和 linkToken 拼接到要打开的官网地址后面
官网地址:https://xxx.com/index
拼接后结果:https://xxx.com/index?appId=10070&linkToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx