授权凭证
用户授权凭证
userAccessToken,可通过 应用免登获取。
应用授权凭证
appAccessToken,使用 App ID 和 App Secret 计算得到,示例代码如下:
注意:出于安全性考虑,在计算应用 accessToken 时需要加入过期时间参数,建议值是 1 小时。
Java:
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
public static final Long EXPIRES_IN = 1 * 3600 * 1000L;
public static final String TOKEN_APPID = "_appId";
public static String genAppToken(String appId, String appSecret) {
if (StringUtils.isEmpty(appId) || StringUtils.isEmpty(appSecret)) {
return null;
}
Algorithm algorithm = Algorithm.HMAC256(appSecret);
long timestamp = System.currentTimeMillis();
Date issuedAt = new Date(timestamp);
Date expiresAt = new Date(timestamp + EXPIRES_IN);
return JWT.create()
.withClaim(TOKEN_APPID, appId)
.withIssuedAt(issuedAt)
.withExpiresAt(expiresAt)
.sign(algorithm);
}
其中 jwt 库的版本是:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
Golang:
import (
"fmt"
"github.com/dgrijalva/jwt-go"
)
token := jwt.New(jwt.SigningMethodHS256)
claims := make(jwt.MapClaims)
claims["exp"] = time.Now().Add(time.Hour * time.Duration(1)).Unix()
claims["iat"] = time.Now().Unix()
claims["_appId"] = appId
token.Claims = claims
tokenString, err := token.SignedString([]byte(secretKey))
Node.js:可以直接使用 tws-auth 库(封装了生成应用 access_token 的实现)
const { TWS } = require('tws-auth')
const tws = new TWS({ appId: '78f95e92c06a546f7dab7327', appSecrets: ['app_secret_new', 'app_secret_old'], host: 'https://open.teambition.com/api'})
// 使用tws发起调用
其他语言生成“应用授权凭证”:用户可以到 jwt.io 查找对应语言的 jwt SDK。生成 “应用授权凭证”的 payload 需要包含三个信息:1)、应用 _appId,2)、签发时间 iat,3)、token 过期时间 exp。伪代码如下:
header = {}
payload = {
_appId: "YOU_APP_ID",
iat: NOW_SECOND,
exp: NOW_SECOND + 3600
}
jwt.sign(header, payload, "YOU_APP_SECRET")
最后修改时间: 3 年前