创建SpringBoot项目步鄹
设置项目基础配置]
勾选自己需要的依赖,本次项目中需要涉及到web开发,后续需要可以通过引入maven坐标来引用依赖
配置项目的名称和保存项目路径
进来后发现类是这样的不要慌
点击maven让他加载相关依赖包等个几分钟就好如果引入的依赖比较多,那么下载的时间就会比较久,等就完事!!!
加载完成后就正常了
使用springboot的好处是帮助开发者快速的搭建Spring框架
把配置文件后缀修改成yml
本质上没什么区别使用
正常的情况是先加载yml,接下来加载properties文件。
运行成功后,通过localhost:8080访问但是我们现在也没有页面所以访问也是404
由于本次做的demo是用来获取有赞的code授权数据,在通过有赞对应的包把code兑换token的过程,所以没有打算做页面,要做页面的话还需要引用和配置SpringMvc的相关依赖和配置!
在pom.xml引入有赞的远程仓库添加在project标签内
<repositories>
<repository>
<id>baymax-releases</id>
<name>Nexus Release Repository</name>
<url>http://maven.youzanyun.com/repository/maven-releases/</url>
</repository>
</repositories>
在引入包的坐标,添加在dependencies标签内
<dependency>
<groupId>com.youzan.cloud</groupId>
<artifactId>open-sdk-core</artifactId>
<version>1.0.5-RELEASE</version>
</dependency>
<dependency>
<groupId>com.youzan.cloud</groupId>
<artifactId>open-sdk-gen</artifactId>
<version>1.0.5.201909051746-RELEASE</version>
</dependency>
创建Controller类,添加注解
RestController:相当于@Controller + @ResponseBody不能返回jsp,html页面,视图解析器无法解析jsp,html页面
RequestMapping:请求地址映射的注解
简单对授权后的用户,有赞会把code发送到我们指定的请求接口中,现在来测试下我们写的Controller能不能接受到我们测试的数据信息!
使用请求的工具是ApiPost软件
软件已经获取到数据信息了
因为我们现在的软件是在本机上,有赞的请求是没办法访问我们的软件,这个时候需要使用到natapp.exe做内网映射
网址:https://natapp.cn/
点击下载程序选择对应的操作系统下载(我是windows 64位的系统)
解压后里面只有一个可运行文件
我们创建一个config.ini
文件用于存放我们一些配置,使用Notepad++
编辑器修改
在里面添加以下配置:
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=xxxxxx #对应一条隧道的authtoken
clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=stdout #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=DEBUG #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
你们只要修改authtoken这个字段的值,这个值是你登录Natapp账号里面生成的值
登录官网后点击购买隧道,一个注册的用户可以购买2条不同协议的隧道
因为我之前搞微信公众号有创建过web隧道,所以没办法创建第二条web协议的隧道
本地默认ip地址就是127.0.0.1
更改完成记得点击修改,截图的时候没有把8288改成8080所以你们懂就好
记得配置这个authtoken参数保存
在创建一个文件natapp.bat用来运行natapp.exe和配置config.ini就一行命令
在里面配置以下内容:
start natapp -config=config.ini
目录结构:
双击natapp.bat运行程序
这个时候你可能就会有疑问,既然是做内网穿透那外网怎么访问域名或ip来访问请求我们本地的程序呢?
Url:参数显示的域名地址就是外网通过这个域名访问我们的本地服务 (注意:这个域名每次关了在启动域名都会发生变化,充钱就可以解决这个问题)
Protocol:使用的协议Http或Https
LocalAddr:这个就是我们配置映射我们本地访问的ip和程序端口号
使用ApiPost来测试请求是否可以被程序接收
1.把之前的localhsot:8080改成natapp里面的域名
由于前面误操作把这个窗口关了域名也就变了,变成了http://jqbxmv.natappfree.cc
2.替换参数
不影响我们测试把这个域名复制到ApiPost把localhost:8080替换
请求已经接受到响应数据
后台程序也获取到数据了
5.通过Code换取token
有赞云开发文档中有流程我们需要把我们的回调地址改成natapp生成的域名以ApiPost请求的地址为例
http://jqbxmv.natappfree.cc/YouzanController/getCode?code=4564sd4ds546s5d4
解析:
http://jqbxmv.natappfree.cc由natapp生成,前面说了每一次软件关闭在开启域名都会发生改变那么我们就要重新修改回调地址
/YouzanController/getCode:为我们springboot的请求接口
?code=4564sd4ds546s5d4:由我们点击授权用户,有赞会自动把回调地址拼接上code=值(值为企业的code信息)
当然这个code的拼接也不是为随便乱写的哦是看文档得来的
剩下通过code获取token就更简单了把我们获取到的code添加到有赞的实例中去获取代码在下面
DefaultYZClient yzClient = new DefaultYZClient();
TokenParameter tokenParameter = TokenParameter.code()
.clientId("请填写您的client_id")
.clientSecret("请填写您的client_secret")
.code("请填写您获取的code")
.build();
OAuthToken codeToken = yzClient.getOAuthToken(tokenParameter);
改造我们的方法:由于我们已经引入了有赞的包所以可以直接调用并且添加try避免响应超时报错等问题
有赞点击企业获取code这步我们可以通过ApiPost来模拟,本质上就是使用的的回调地址进行拼接企业的code信息在发送请求到我们程序的服务端,由于code是乱输入的所以也不会成功我们就看一下效果,说干就干!
ApiPost打开
拼接好乱输入的code重启服务端
发送请求后服务端已经接收到信息有赞返回非法授权的错误
不影响我们,等真实测试的时候就不会出现这个!
添加2个参数一个是配置打包方式
,另外一个是打包后的名称
需要
注意:在添加的标签要在对应标签里面不然也会报错
<packaging>jar</packaging><!--打包方式jar 或 war -->
<build>
<finalName>itmei</finalName><!--打包后的名称-->
</build>
打包前先clean下
接着在运行package命令
打包,打包完成后会生成target目录
里面就有存放我们的程序.jar
我们创建一个文件夹最好名称是英文以免遇到问题,把jar包复制进去
这个时候你可能会问为什么我们写的代码没有多少但是打包出来的程序有25m大小,由于引入的maven包比较多导致打包都把一些SpringBoot用不到的包也打包进去了
可以看出外部库的包有很多,我们不纠结
创建一个windows的启动文件名称我取名start.bat至于你们取什么都可以里面也就一行命令
java -jar
固定写法 后面跟可运行的jar文件
start java -jar itmei.jar
使用命令行的方式就把start给去掉运行,前提是命令行是在当前目录上不然会报找不到的错误
运行前需要保证程序的端口不能被占用了
被占用程序就报错结束了
先测试命令行的运行成功状态
使用ApiPost请求测试下运行情况
可以看出可以获取到数据信息
双击运行我们创建的start.bat运行程序
大功告成,创作不易
真实操作有赞获取code兑换token
在线网址解析一下json我们已经可以获取到企业的token和refreshToken了