Skip to main content

获取token

获取步骤​

接口调用时需要将 token 包含在请求的 header 中,获取token步骤如下:

  1. 联系众壹工作人员获取key、secret、appid、username、password
  2. 通过脚本根据key和secret加密访问生成请求获取code接口的token
  3. 根据token、appid请求访问code接口获取X-Access-Token
  4. 通过脚本根据secret将用户密码加密
  5. 最后根据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)

请求参数​

名称位置类型必选说明
tokenquerystring是通过上述脚本获取的token
appIdquerystring是appid,联系众壹获取

返回数据结构​

状态码 200

名称类型必选约束中文名说明
» tokenstringfalsetoken

返回示例​

"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-Tokenheaderstring是通过/auth/requestServerCode接口获取的token
usernamequerystring是用户名
passwordquerystring是加密后的用户密码,将原密码通过脚本加密获取

返回数据结构​

状态码 200

名称类型必选约束中文名说明
access_tokenstringtruetoken用户token
expire_timestringtrue过期时长

返回示例​

{
"access_token": "token",
"expire_time": "2 hours"
}