最近参加了虎牙小程序挑战赛,在团队中的负责后端开发,由于之前没有接触过小程序开发,刚开始的时候也是一头雾水,完全找不到方向,然后自己慢慢摸索才找到一些方法,现在分享给大家。
虎牙小程序提供丰富的SDK
具体SDK信息请查询虎牙小程序官网
作为后端开发,这些已有的SDK功能我们就不用再开发了,我们只需要写文档上没有的接口,而接口就有权鉴的问题。虎牙小程序是前端利用hyExt.request接口转发后端的请求,使得后端在接收请求的时候在请求头可以收到authorization信息,但作为后端,我们不用管那么多,只要解析请求头的authorization是不是能正常解密,然后写好自己的接口就行啦。
authorization解密方式
authorization是jwtToken
分成三部分
Header
Payload
Signature
通过英文点号"."拼接成 Header.Payload.Signature
具体的大家请自行查询,这里就不细说jwt了,只跟大家说如何具体操作。
第一步 加载依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.6.0</version>
</dependency>
第二步 请求头接收 authorization并解析
@RequestMapping("/test")
public Map test(HttpServletRequest request){
String token=request.getHeader("authorization");
Map resp = new HashMap();
try {
Claims claims = Jwts.parser().setSigningKey("123456".getBytes()).parseClaimsJws(token).getBody();
String profileId= (String) claims.get("profileId");
catch(Exception n e) {
resp.put("code", 583);
resp.put("message", "error");
return resp;
}
}
这里利用Jwts.parser()方法来解析jwt,
其中,setSigningKey中的“123456”为jwt第三部分的加密密钥,
在虎牙小程序中这个密钥对应的是开发者申请的appId的secret,
如果jwt用此密钥无法被解析,就会抛出异常,
解析结果Claims为jwt包含的一些信息,必比如用户id和等级等。
这就是通过jwt来验证虎牙小程序使用者的身份啦,接口中其他的功能自己写就行了,还是很容易的,因为大部分功能虎牙SDK都包括了。