我如何从android生成JWT令牌

时间:2017-01-24 04:01:39

标签: android token jwt

如何从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方法中发送的名称,值对。

。请帮忙

2 个答案:

答案 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()

这是从应用程序端生成令牌的正确方法。这样数据就不会以普通标题发送。