第一次写小程序登陆授权,踩了很多坑。什么用encryptedData、iv、code这些参数去登录,其实只要一个code就够了。
还有各种看不太明白的参数secret、authorization_code等等,不过不影响写代码。
回到正题,今天遇到最大的一个坑就是javax.crypto.BadPaddingException: pad block corrupted这个错,我是按着网上教程来做的,当我敲到需要这个包的的时候就报错了,我不知道为什么。
然后我就网上查了一下,说是缺个包,按照他给的包
(
org.bouncycastle
bcprov-jdk16
1.46
)依赖粘贴到Pom文件里面去,开始是能查而且能获取到手机号(debug的时候后确实能获取手机号),但是就是返回不出去数据,报这个错javax.crypto.BadPaddingException: pad block corrupted。
然后开始排查措的原因:
1.参数:encryptedData、iv、code并确定code没有被重复利用。参数没有问题
2.请求方式,一般都是get,我怕encryptedData这个数据过长会导致数据丢失,用Post试了一把,结果还是报同样的错,并不是这个原因。
3.再一次确认appId、appSecret等参数是否有效,结果证明这些数据都是有用的。
4.网上有人说是这个里面的参数有问题,用了他们的参数,还是一样报错。
咻~~
5.还有人说是公钥写错了,蜜汁公钥,不晓得。
6.还有个大佬好像分析的很在理,
直接引用大佬的结论的截图,但是我不可能是这种情况,因为我没用redis。
7.再次回到(这时候才想起来在pom文件导了个包,大多数人好像不需要导包,是我看的教程有问题?)导包这个问题,
我参考了之前我公司大神写的代码,他的授权获取手机号好像并不用导这个包。
找了很久发现他的maven里面是有的
惊奇的发现我的项目里面到的那个包和这个包根本不一样,直接去把这个包去搜出来粘贴到POM文件中:
org.bouncycastle
bcprov-jdk15on
1.60
在试一次,已经花了一上午时间的bug终于干掉了,但我还是不明白为什么他们的项目中并不需要导这个包maven中就有了这个包,应该是包含在某个包中。
但是具体是在哪个包中呢?有没有大神指点一下
这是我的pom
org.springframework.boot
spring-boot-starter-web
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
</dependencies>
这是大神的pom
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-openfeign
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
com.qky
qky-common
1.0-SNAPSHOT
io.jsonwebtoken
jjwt
${jwt.version}
org.springframework.boot
spring-boot-starter-data-redis
com.alibaba
fastjson
1.2.47
org.springframework.boot
spring-boot-configuration-processor
true
<!--swagger2UI配置-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>
</dependencies>
今天就记录到这,下班了,溜了。