如何从android生成JWT令牌。我尝试了以下方法:
token = JWT.create().withClaim("email",username)
.sign(Algorithm.HMAC256("secret"));
System.out.println(" JWS token : "+ token);
但我得到了这个例外:
java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/ext.jar)
at com.auth0.jwt.JWTCreator.sign(JWTCreator.java:283)
at com.auth0.jwt.JWTCreator.access$100(JWTCreator.java:23)
at com.auth0.jwt.JWTCreator$Builder.sign(JWTCreator.java:264)
at se.stigasoft.netwrapper.NetCom.jwtWork(NetCom.java:321)
我也试过了其他一些图书馆的其他方法。
String compactJws = Jwts.builder()
.setSubject("Joe")
.signWith(SignatureAlgorithm.HS256, "secret".getBytes())
.compact();
这个生成令牌。但我不知道如何发送我的数据,如我过去在post方法中发送的名称,值对。
。请帮忙
答案 0 :(得分:2)
要生成JWT令牌,可以使用以下方法生成:
1)在gradle中添加依赖项
implementation 'io.jsonwebtoken:jjwt:0.7.0'
2)在参数的基础上添加以下代码。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String jwt = Jwts.builder().claim("emailId","test123@gmail.com").claim("emailIdOTP", "123456")
.claim("phoneNo", "1111111111")
.signWith(SignatureAlgorithm.HS256, "secret".getBytes())
.compact();
Log.v("JWT : - ",jwt);
}
});
答案 1 :(得分:0)
在最后一天在互联网上挖掘之后,我找到了解决方案
String compactJws = Jwts.builder().claim("email",username).claim("password",password)
.signWith(SignatureAlgorithm.HS256, "secret".getBytes())
.compact()
这是从应用程序端生成令牌的正确方法。这样数据就不会以普通标题发送。