【问题标题】:How do i generate JWT token from android我如何从 android 生成 JWT 令牌
【发布时间】:2023-04-09 16:44:01
【问题描述】:

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

。请帮忙

【问题讨论】:

  • 问这样的问题时,请说明您使用的是哪个库,因为这不是核心 Android 平台的一部分。

标签: android token jwt


【解决方案1】:

经过最后一天在互联网上的大量挖掘,我找到了解决方案

  String compactJws = Jwts.builder().claim("email",username).claim("password",password)
                .signWith(SignatureAlgorithm.HS256, "secret".getBytes())
                .compact()

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

【讨论】:

  • 上述代码的实现需要添加什么名称/依赖?
【解决方案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);
            }
        });

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 2018-08-29
    • 2021-07-29
    • 2019-11-29
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多