获取AccessToken

接口说明

  • 为每个第三方访问者发放AppId和AppSecret
  • 访问者使用AppId和AppSecret通过本接口获取AccessToken

请求URL

/openapi/v2/common/getAccessToken?appid=xxxx&timestamp=xxxx&nonce=xxxx&sign=xxxx

  • 接口统一为 UTF-8 编码;
  • 接口支持 http 和 https;
  • 请求方式为GET。

请求参数

appid & appsecret
  • 服务器端生成appid&appsecret对,提供给访问方
timestamp
  • 1970-01-01以来的秒数
  • 和服务器间隔超过10分钟无效
nonce
  • 随机值字符串

加签方式

sign=MD5(appsecret + appid + timeStamp + nonce + appsecret)

返回结果

参数名 是否必须 类型 说明
Token string AccessToken
ExpireTime string 过期时间

例子

  • appid: “Jx3wQMD1”
  • timestamp: “1676874831”
  • nonce:”cbQSLn4Ipaa9dUBrMErWAlnGFO3fewY”
  • app_secret:”d68397c4fb671bc024e24e1964b067cc35388818”
GET
  • sign:”5aef2812c4aa99ac901d66a5edf26e15”

响应

参数名 是否必须 类型 说明
code int 错误码,0000为正确,其他为错误值,错误时,message为错误详情
message String 错误信息
result 对象 正确返回结果,根据消息不同而不同
返回值(code)

错误code码说明

code码 英文code 说明
41001 CODE_APPID_MISSING 缺失appid参数
41002 CODE_APPID_INVALID 无效的AppID
41003 CODE_TIMESTAMP_MISSING 缺失timestamp参数
41004 CODE_TIMESTAMP_INVLID 无效timestamp
41005 CODE_NONCE_MISSING 缺失nonce参数
41007 CODE_SIGN_MISSING 缺失sign参数
41008 CODE_SIGN_INVALID sing参数无效
41010 CODE_JSON_INVALID Json参数无效
41011 CODE_JSON_MISSING 缺失Json参数

代码

Java
//生成指定长度随机字符串
public static String getRandomString(int length) {
    String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    Random random = new Random();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < length; i++) {
        int number = random.nextInt(62);
        sb.append(str.charAt(number));
    }
    return sb.toString();
}
// 发送http请求
public static String sendPost(String url,String param)
{
    String result="";
    try{
        URL httpurl = new URL(url);
        HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();
        httpConn.setDoOutput(true);
        httpConn.setDoInput(true);
        PrintWriter out = new PrintWriter(httpConn.getOutputStream());
        out.print(param);
        out.flush();
        out.close();
        BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
        String line;
        while ((line = in.readLine())!= null)
        {
            result += line;
        }
        in.close();
    }catch(Exception e){
        System.out.println("ApiDemo:"+e);
    }
    return result;
}
// Api测试demo,
public static void testApi(){
    String url = "http://127.0.0.1:9130/api/v2/common/GetAccessToken";
    String appid = "Jx3wQMD1";
    String appsecret = "d68397c4fb671bc024e24e1964b067cc35388818";
    // 生成随机字符串
    String nonce = getRandomString(32);
    // 调用时间戳(1970/01/01以来的秒数)
    long seconds = System.currentTimeMillis() / 1000l;
    String timestamp = "" + seconds;
    // 接口内容
    MessageDigest md5 = null;
    // 生成签名
    String signStr = "";
    try {
        md5 = MessageDigest.getInstance("MD5");
        // 转换为MD5码
        String input = appsecret + appid + timestamp + nonce + appsecret;
        md5.update(input.getBytes());
        signStr = new BigInteger(1, md5.digest()).toString(16);
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    // 生成查询字符串
    String queryString = "";
    queryString += "appid=" + appid;
    queryString += "&timestamp=" + timestamp;
    queryString += "&nonce=" + nonce;
    queryString += "&sign=" + signStr;
    url += "?" + queryString;
    System.out.println("url:"+ url);
    String result = sendGet(url);
    System.out.println("result:"+ result);
}
js
//产生随机字符串
function randomString(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
    return result;
}

var data = {
    appid: "Jx3wQMD1",
};
data.nonce = randomString(32, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
data.timestamp = Math.round(new Date().getTime()/1000);
var app_secret="d68397c4fb671bc024e24e1964b067cc35388818"
var CryptoJS = require("crypto-js");
//pm.request.body.raw 为Post的内容,可以为空字符("")
var md5str = CryptoJS.MD5(app_secret +  data.appid + data.timestamp + data.nonce + app_secret).toString();
data.sign = md5str;

// 处理请求地址
var query = require('querystring');
var s = query.stringify(data);
pm.request.url += '?' + s;
文档更新时间: 2023-02-23 13:39   作者:方杰