00:00
各位同学大家好,咱们继续往下实现,现在呢,咱们进行授权之后,已经得到了你当前微信的open ID,包括微信信息都已经得到了,那咱下面要做的是什么呢?就是把咱们获取到微信信息添加到我们的数据库中,是不是就可以了,那下面做个添加,而数据库操作的是咱们这个user info这个表里边内容,那下面我们开始做一下啊。但是我强调咱们第一次肯定要进行授权,但是我授权之后,后面是不是就不需要往里面加了,咱只需要第一次往里面加,那怎么来进行判断,咱们看一下啊,在表里边有个字段,就是里边的这个字段。Open ID,那咱可以根据它做个判断,如果open ID已经存在,咱就不需要加,如果它不存在,那我们再进行添加,所下面我们来写下啊,咱就直接调用user info里边我们加个方法就叫做get user info。
01:05
根据这个open ID里边,就传入咱们上面那个open ID。这个值。最终让他返回到就是user info这个对象,这个方法咱们一会儿进行完善,然后得到之后,下面我们做个判断,如果说ID查出这个对象值它等于空,那表示表里边不存在相同这个数据,那那把数据加到数据库可以了,我来加一下啊,User info咱们new上这么一个对象。然后向里边来添加它的这个值,那我们加一下,比如第一个值,咱添加主要的就是欧派D。然后现在再加一个里边应该有一个那个微信的昵称啊,这微信昵称咱通过微信LP是可以得到的。Nickname可以得到,另外里边还有其他值,其他纸呢,我就从课件复制一下啊,咱找一下应该还有这几个值。
02:07
这个都拿过来啊,当然有时候可能为空,比如说你看啊,有你这个头像的地址,有你的性别ID,包括你所爱的省等等,这些都加到对象中去,然后最后我们调方法,User info里边的save方法,传入user info对象,这样的话就完成了用户微信信息的添加,这个咱就做到了,然后做到之后咱们的最后一部分,那我们就。在这个授权。完成之后跳转到你具体的功能页面就可以了。啊,跳转到具体的功能的页面。那这个页面路径咱刚才看到了,是不是就是这个路径,那我们做个跳转就可以了,那咱们给他写一下啊,但是跳转中大家看前端里边啊,前端它是不是要根据这个token值做个判断呀,所以咱需要给他传个token值,Token值就是一个字符串,里边可以包含你的用户信息,所以最后我们就来做这个事情。
03:14
那我写一下啊,首先在过程中我们先生成一个ton,就是按照一定规则这么一个字符串。写一下啊,按照一定规则生成的一个字符串,里边可以包含你的用户信息。这个字母串,那这里边我先来一个token。这个啊,咱们一会儿再生成,先给它放到这里,然后写完之后,最终我们来做这么一个跳转,跳转过程中啊,咱们把这个路径直接写一下啊,我加上一个旅。然后加上一个叫direct。冒号加上我们这个路径,这路径就是这个叫re ul,然后在后面呢,咱再拼上它,那个就是参数,我们叫token,因为前端里边这位置做了一个处理,Token值就是等于我们当前的这个。
04:12
值。所以现在啊,这个部分我们就完成了,完成之后呢,最后我们就是两个部分,第一个写这个opd的方法,第二个写一个规则,把token生成出来,所以下面我们进一步实现一下啊,咱们看怎么来做。然后这个写的过程中呢,有这么一个小问题啊,大家注意啊,就这个地方。比如你注意啊,就是我的径里边咱们写个示例啊,比如我的径呢,假如说我的路径呢,目前是比如说啊是这么一个路径,Local这个比如说8080啊加上这个叫比如叫什么什么微信这个路径,路径中如果你第一个参数,咱们是不是加个问号,比如我现在啊,假如说有一个参数,我有第二个参数,是不是加个and的符号,所以这里边我们最好做个判断,就看你路径中啊是否包含了参数,如果有参数我们就加上这个and的符号,没有参数那就加这个问号,咱做的更完善点啊,那我在里边写下。
05:16
就是各位是否能听懂啊,就是之前路径中如果说没有参数,那我就直接写问号,如果之前有参数,你就不能写问号,这个位置要加上一个叫是不是and的符号,所以这位置做个判断处理一下啊。退,咱们。给它检索一下啊,Inex个off,给它搜索一下这个问号,然后它这个值如果说等于负一,就表示它里边没有这个参数,没有参数的话呢,那咱就直接蕊退这位置就加上一个问号,如它的值不等于负一,表示里边有参数,那这个值就加上一个an的符号。啊,这个咱们写的就是更完善一点。
06:01
在以目前这过程完成,完成之后,咱们写一下最后的这么两个方法,把最后这个方法我们最终做实验,那咱们啊最终写下啊,首先我们写第一个方法,这个方法根据open ID得到你的用户信息,我在service里边把方法先做个创建。就是。写一下啊op ID查询信息,最后在它的实现类中,咱们把这方法最终做个实现。这个方法应该很简单啊,就是根据open ID直接查就可以了,我在里边快速写下,先加上一个query rapper,传入user in。然后它的名字叫rapper,上一个query rapper rapper里边设置它的这个条件。啊EQ,然后它的条件应该是这个叫open ID啊,就这个字段名字,这个名字呢,咱为了防止写错,我从这个表里边把字段直接复制过来,然后他传的值叫OD,最后我们调方法给他做个返回,我就调这个base里边这个叫select,因为它肯定是唯一的,不能重复。
07:18
最终返回的是user应付对象。咱们加上一个铝退,所以现在这个方法完成,完成之后,最后咱再看这个token的生成啊,那我来说一下啊,这token生成呢,其实这个传的话呢,我们一般来讲肯定不能传个铭文,咱要按照一定规则生成,并且把这个就是这个数据做一个加密,或者做一个编码,那token怎么生成,大家看我的课件里边啊,给大家讲一个新的内容。咱们看这段内容。我这里提到啊,通过token传递用户信息,Token就是按照一定规则生成的一个字符串,而这个规则咱们要自己约定,可能并不是很简单,所以实际中呢,有一个工具,这工具叫做GWT,通过它能给咱们约定好一种规则进行生成。另外这个工具生成的token还有一个重要的作用,能进行防伪,就是别人不能伪造。
08:19
而开咱们看一下啊,JWT生成它是分成三部分,第一部分叫公共。就设置你的这个相关的信息,第二个叫私有,表示咱的用户,比如我包含用外地用户名称,第三个就签名进行加密,进行编码处理,所以咱们下面通过JWT把token生出来就可以了啊,当然你可以用别的工具,或者你自己约定个规则,是实际中JWT会特别方便,它能够快速生成一个同文字符串,并且字符串具有防伪的这么一个作用。那下面咱来生成下啊,因为这个JWT后面很多地方都需要用到这个token,所以咱们把它就放到我们的common里边进行实现,就这里边来写,那我来做一下啊,首先第一步咱们在common里边先引入一个依赖,我把依赖直接复制过来,然后依赖中主要就是这个依赖JWT这个工具,这是第一步,然后复制之后第二部分在里边咱们加上一个JWT的工具类就可以了,我把工具类直接咱们复制过来,这是一个固定结构。
09:28
那我写到这里啊,我在这里边呢,建个包叫。然后里边创建一个类,咱就叫j wt help,然后把这个类的内容我从里边直接复制过来,包括里边的依赖给它快速引入一下,那咱们一边引入一边看一下啊,大家看先看第一句话。这是什么?它就表示啊,Token字符串用GWT生成,它有一个过期时间,超过时间就不能用了,我这里为了测试写的长一点,然后第二个是你加密那个编码那个密钥,比如写成123456或者at,硅谷下面我们这里边有三个方法。
10:13
第一个方法就是根据用户ID和用户名称生成一个token,那咱看他怎么做的啊,不需要各位写,但是要求能看懂,来看第一步我们调这个build的方法,给他建一个分类的名字,这名字随便起的,然后下面这部分是他的过期时间,就是当前时间,加上这个时间之后它就过期了。下面是我们的私有部分,比如现在我存入我的ID和名称,你可以加更多值。最后就是它的编码和加密的处理,我们用HS2512啊,根据这个密钥进行编码,包括把这个数据做一个压缩,最终把它返回,这是我们写的一个方法,就是咱们掉就可以了。下面还有两方法,根据通文字符串取到里边的ID,还有里边的名称。
11:05
啊,所以现在这是一个工具类的编写。那工艺类写完之后,咱们做个测试,大家看效果啊。我这里边直接测试一下啊,比如说各位看啊,我现在传入两个值,一个ID,一个名称,然后把这个代码执行,因为就是一个问方法,咱直接测试一下,看一下啊,这个ton值到底长什么样子。等他执行就是一个main方法。咱们来看啊。稍微慢一点啊,大家看啊,现在这数据返回了,然后反应数据里边,我们把这个数据呢,给大家拿到图里边,咱们看一下这个数据啊,我们看一下。呃,再往下找一下,就在这里啊,咱看这数据我们看啊,它里边有一个点的隔开的位置啊,有一个点还在这里,你看啊,就是三部分,咱们说JWT3部分组成,所以它最终变成这个样子,这个样子做了编码,做了加密处理,就是防止伪造,有一个防伪的特点,然后这个得到之后。
12:09
下面呢,还有两个方法。第一个方法就是根据这个字符串,就是说根据这个字符串。能把里边你放到ID渠道,还能把里边你放那个名称渠道,这是两个方法,那咱们给他最终执行一下啊,生成token字符串,然后把里面的ID和名称都给它取出来,咱们做个测试,看一下这个效果到底什么样的。等它执行,然后大家看啊,这是字符串,这是ID,这是那个名称,以上就是JWT工具类的一个整合,这咱就要放到这里,后面咱们传入用户信息都是通过token字符串进行传递,而token字符串我们通过JWT进行生成。那下面呢,这个写完之后,咱把这代码完善一下,就是这个位置生成字符串,最终进行跳转,那我来写一下啊。
13:07
调用工具类wtper里边的方法,Token传入我们的值,第一个值就是用户ID啊,咱们是这个get ID,然后第二个是咱就传这个昵称。User info get。Name最终生成透字符串,然后咱们进行跳转,跳转之后把它传到咱的前端,在前端里边放到local storage里边进行存储啊,所以以上我们就把这个微信授权登录的接口部分咱们就最终完成了。完成之后我们再检查一遍啊,然后最终咱们做一个测试,看一下最后结果。那我们看一下啊,这个过程就是咱们访问公众号菜单里边的这些功能都首先需要进行授权,授权之后才能进行操作,那授权做法就是在前端咱通过local里边做个判断,如果这里边有数据,那我们就直接做这个操作,没有数据我们要授权,授权的话调用咱们这个接口,我接口里边刚才写的第一个这个接口,然后里边拼接你的路径做这个跳转,跳转之后它在这个里边得到我们的用户信息,包括open ID,包括微信昵称等等,然后把数据加到数据库中,最终我们生成ton存储信息,做最终跳转。比如我们现在到这个直播的某个课程中去,当你授权之后,它就真正进入页面做直播的操作。
14:42
以上是咱说的过程啊,然后在里边还要强调token呢,咱们说了一个工具叫JWT,通过JWT生成token字符串,最终传递用户信息,所以以上这个微信授权登录的部分我们就最终完成了,完成之后呢,最后咱们把效果做一个最终的测试,看一下最后结果。
15:07
啊,那我们来试一下这个效果啊。当然这个过程中呢,我在表里边就是目前啊,这个表里边放了很多的数据啊,咱为了明确啊,我把相关数据先删掉,要不然有些数据看不到啊,先把我那个微信信息先删掉。这是之前我加底下测试数据,然后下面呢,咱们开始做这个测试。等它启动啊,然后现在启动了,启动之后我们来看一下啊,就是现在在里边我把公众号打开。点击某个课程咱们进入。然后点击之后在里边啊,这个过程中我们看啊,现在我们来做这操作啊,当然这过程中呢,这里边啊,可能会有这么一个小问题,因为之前可能有些缓存,所以咱们可以把那个缓存的先给它清一下,然后后面再做这操作啊,那这里边啊,我先把缓存先给它清一下啊。
16:02
咱们试一下啊。这里边啊,就是你看啊,我页面中呢,特别加了一个按钮叫清空localage,咱们把它清一下,其实这个按钮呢,实际中应该没有,我为了测试方便你看啊,在我的页面中特别加这个按钮,或者清空里面这个logo死位置,要不然你后面没法测试,或者说不好测试,给他清除一下啊,咱重新试一下。这个应该都清掉了,那咱们重新操作。啊,这个啊,重新启动一下。可是为了测试方便啊,实际中肯定没按钮,咱测试每次把它那个logo所率的值给它清一下,然后方便咱们进行实现。重新启动,重新测试啊。现在我表里边应该没有我当前的微信信息,这些都没有,最终在表里边应该有数据,包括最终完成跳转。现在启动了啊,然后咱们重新试一下啊,我在里边打开这个就是公众号。
17:01
发消息,咱们随便点一门课程,点完之后各位看啊,现在在里边他应该是能过来啊,啊,我稍等大家试一下啊,刚才应该。重新换一个啊,应该还是那个没有清除掉啊,或者你给他重新关注一下应该也可以。重新啊给他试一下啊,重新弄一下。我把这个都给它关掉,再重新打开一下啊,然后咱再试一下,它里面有之前存的那个缓存的信息。好,咱们现在啊,把这些都关掉,给它重新测试一下啊,我再重新打开,然后在里边点击这个那种点发消息,我们最终再试一下啊,比如现在我点击这个课程。然后咱们看啊,目前过来了,之前有那个logo位置给它都清掉了啊,然后清掉之后我们看啊,第一部分咱们测试过了,我直接放过去,到第二部分在里边我们直接授权登录,然后到这里边得到你的微信的信息,最终把信息加到数据库中,咱目前u info等于空,里边没有内容,然后咱们往里边加数据,加完数据之后最终完成一个跳转,这是那个token字符串,这里边也生出来了,然后下面进行这个跳转。
18:12
以上是咱的过程啊,然后挑选之后会到咱的具体页面,因为这还没有做到,后面咱会实现,另外咱们看表里边,目前你看啊,加了我这个微信信息,包括我的微信的昵称,然后里边你看有我这个open ID里边应该都加进来了,所以目前我们就完成这个过程。另外就是我强调啊,在测试的时候,我们需要把这个倾向,要不然可能出现刚才那个界面503界面,把这给它清除一下就可以测试。所以以上就是咱们做到的微信授权登录的过程,这个咱们就做到了,这个过程中呢,主要用的一个值,就是里边这个open ID值,后面很多地方都要用到,咱目前就完成这个功能的实现。
我来说两句