获取token
获取步骤
接口调用时需要将 token 包含在请求的 header 中,获取token步骤如下:
- 联系众壹工作人员获取key、secret、appid、username、password
- 通过脚本根据key和secret加密访问生成请求获取code接口的token
- 根据token、appid请求访问code接口获取X-Access-Token
- 通过脚本根据secret将用户密码加密
- 最后根据X-Access-Token和username、password(加密后的密码)请求访问token接口获取接口调用所需的token
获取code
接口描述
根据提供参数访问获取code,code有效期为2小时。
接口方法
/auth/requestServerCode
请求方式
GET
获取请求参数token脚本
java示例
public static void main(String[] args) {
String key = "YOU_KEY";
String secret = "YOU_SECRET";
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("key", key);
claimsMap.put("secret", secret);
String token = Jwts.builder().setClaims(claimsMap).signWith(SignatureAlgorithm.HS512, secret).compact();
System.out.println(token);
}
python示例
import base64
import jwt
# 根据key secret 生成令牌
key = "YOU_KEY"
secret = "YOU_SECRET"
# 设置claims
claims_map = {
"key": key,
"secret": secret,
# "exp": int(time.time()) + 3600 # 设置过期时间,例如1小时后
}
JWT_SALT = base64.decodebytes(secret.encode('utf8'))
# 使用HS512算法生成JWT
token = jwt.encode(claims_map, JWT_SALT, algorithm='HS512')
print(token)
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| token | query | string | 是 | 通过上述脚本获取的token |
| appId | query | string | 是 | appid,联系众壹获取 |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » token | string | false | token |
返回示例
"token"
获取token
接口描述
根据提供参数获取用户token。
请求方法
/auth/requestToken
请求方式
GET
加密密码脚本
java示例
public static void main(String[] args) throws Exception {
//你的secret
String secretKey ="YOU_KEY";
System.out.println("secretKey"+secretKey);
//你的密码
String originalData ="YOU_PASSWORD";
// 加密
SecretKey key = hexToSecretKey(secretKey);
String encryptedData = encryptAES(originalData,key );
System.out.println("Encrypted Data: " + encryptedData);
}
/**
* 加密方法
* @param data 原始数据
* @param secretKey 密钥
* @return
* @throws Exception
*/
public static String encryptAES(String data, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return java.util.Base64.getEncoder().encodeToString(encryptedBytes); // 转换为 Base64 字符串
}
/**
* 将十六进制字符串转换为SecretKey对象
* @param hexKey 十六进制字符串
* @return SecretKey对象
*/
public static SecretKey hexToSecretKey(String hexKey) {
byte[] keyBytes = hexStringToByteArray(hexKey);
return new SecretKeySpec(keyBytes, "AES");
}
python示例
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
import sys
def hex_to_byte_array(hex_key):
try:
return bytes.fromhex(hex_key)
except ValueError as e:
print(f"Error converting hex key to bytes: {e}")
sys.exit(1)
def encrypt_aes(data, secret_key):
try:
cipher = AES.new(secret_key, AES.MODE_ECB)
encrypted_bytes = cipher.encrypt(pad(data.encode(), AES.block_size))
return base64.b64encode(encrypted_bytes).decode()
except Exception as e:
print(f"Error during encryption: {e}")
sys.exit(1)
def main():
try:
#你的secret
secret_key = "YOU_KEY"
#你的密码
password = "YOU_PASSWORD"
print("password:", password)
key_bytes = hex_to_byte_array(secret_key)
encrypted_data = encrypt_aes(password, key_bytes)
print("Encrypted Data (Base64):", encrypted_data)
except Exception as e:
print(f"An unexpected error occurred: {e}")
sys.exit(1)
if __name__ == "__main__":
main()
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| X-Access-Token | header | string | 是 | 通过/auth/requestServerCode接口获取的token |
| username | query | string | 是 | 用户名 |
| password | query | string | 是 | 加密后的用户密码,将原密码通过脚本加密获取 |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| access_token | string | true | token | 用户token | |
| expire_time | string | true | 过期时长 |
返回示例
{
"access_token": "token",
"expire_time": "2 hours"
}