00:00
就是咱们上午把这里边的二维码我们已经生出来了,也是咱们访问我们这个地址,最终看到这个二维码啊,这是咱们上午做到的,而咱们下标做的事情就是当我用微信一扫这二维码,咱们看什么效果啊,我们先看一下目前的效果,然后给大家做个分析,因为这里边我们做了一种规则的处理啊,那我这里边我用我的手机我先扫一下啊。然后手机上写一个同意,你点这位置提示扫描成功,扫描之后呢,大家注意看个地方啊,因为咱没有写到,但是这位置。就是现在我扫描之后呢,在我地址栏就变成了这个地址,那这是什么意思,给大家我来说一下啊,就是你看啊,目前地址栏中的地址,它变成了这个地址。而这个地址呢,肯定不是我们的地址啊,它发生一个变化,那这过程到底是怎么样的,我下面给大家来做这么一个详细的说明,然后咱们写代码啊,那我来说一下啊这个过程。
01:06
我在图上画一下啊,这里边。这个图先关掉啊,然后咱的过程怎么样呢?就是现在比如说我在这个页面中,我们有一个二维码啊,就这二维码,比如我截个图。然后有二维码之后,当我现在利用手机微信去扫描这二维码,那他会怎么做,往下给大家说这个过程啊,就现在我用微信。去扫描这个二维码。那他会怎么做呢?给大家说一下啊,它的过程就是就是现在大家注意啊,我在这个我们项目中的这个配置文件中,咱们曾经有这个地址。不是各位是否记得啊,就是我说那个域名,咱有这个域名,然后这个当我扫二维码之后,他会怎么做呢?我写一下啊。小区位置它的做法就是你一扫描,它就会去调用你那个配置的那个域名的那个地址,也就是你一扫它就会去调这个地址,这是在域名上有个地址。
02:09
啊,这是我们这边提供域名,然后这域名里边你可以,比如说这里边我强调啊,因为咱们现在啊,我们要让所有同学都能测试成功,所以我们想了一种解决方案,但是其实在实际的这种公司做项目中,它不需要咱们复杂,实际中怎么做呢?就你公司里边有公司的域名,有公司服务器,那咱把代码直接部署到公司那个服务器上就可以了,但是现在因为咱为了测试,我们想要这个扫描之后呢,去请求我本地的这个方法,就我本地一写个方法会操作,那咱这里边我是多做了一步处理,这只是我们现在这么作,在实际公司中其实不需要这么麻烦啊,但是咱这比实际公司其实还要复杂,那怎么做到的,给大家说一下啊,就是里边我们这边是这么做到的。当我们算法之后去调用这个地址,而在我这个域名这个地址里边,我们是写了一个程序,程序里边呢,做了一个处理啊,就是程序中写了一段逻辑,然后怎么处理的呢?给大家说一下啊,这里边就是在这程序中,当你一调用程序里边给我们直接就是直接啊去。
03:21
请求一个地址,通过这个地址让他就到我们的本地。然后这个地址怎么样呢?就是咱们刚才看到的这个地址,就是把这个地址我在程序中直接给他做了一个请求,让他最终到这里边来啊,这是我们里边做一个处理。就是到这位置。这给大家啊,也是画一下。把这个啊画下它,然后再说一下这个过程啊,就是现在当我们一扫描二维码,它里边怎么做,就会去调用咱们配置这个域名地址,因为咱们现在啊,有很多同学,我们没法所有人都测试,所以我们这边啊想了一个办法,什么办法呢?在这个域名这里边,我是写了一个程序,这已经部署到了服务器上啊,这是一个程序,程序中怎么做的,当你请这个地址,我地址里边就直接给你去请求一个地址,就给你直接跳转到这个8105作用中来啊,我是这么做到的,所以说这个8105什么意思呢?是我写一个固定地址,所以需要咱们怎么做的,我写一下啊,就需要我们。
04:28
啊,需要我们做这么两件事情,就能让你扫码之后,只有你本地方法哪两件事情,首先第一件事情就是各位需要把我们这个。本地的这个服务的端口号改成这个叫8150啊,这是第一个,然后第二个我们需要把我们这个就是回调的那个接口的地址和我这个域名里边跳转的地址给它写成一样,就写成一样的地址。
05:03
我们需要这么来做啊,写成一样的地址,所以这是我们需要做这件事情,也就是说什么意思呢?第一个大家看啊,我现在这个U3它的端口号是不是这个8006,那么要改成跟域名地址一样,我的域名叫8150,所以咱们需要做个修改,把它就改成8150,这是第一个,然后第二个大家看啊,我这个访问地址是不是叫APIU3的这个微信,如果你跟这个不一样,需要改成这一样,也就是改成。这个地址apiu center微信跟他必须要一样,然后这个方法名字咱一会儿必须叫这个扣啊,这是我们必须要这么来做到的,因为咱是按照这种规则把它做了一个跳转啊,这也是为了我们所有人能测试成功。也就是说呢,我现在。在里边呢,咱写个方法写一个啊,我就叫get mapping,然后这里边的名字必须跟这一样,这名字是不是叫call back,那我这名字也必须叫back,然后下面写着方法public r,我叫这个扣back。
06:13
然后在里边应该不是哈,是string啊,Public这个string。这个call back,然后最后我们可以给它return一个值,比如说写一个direct。然后冒号加个HTP,冒号杠杠,比如加个local house这个。3000啊,咱现在就要这么来做,也就是说呢,当我们一扫二维码之后,他就会去执行我们本地的这个扣拜方法,但是他默认这个方法找不到,我这里边是加这个规则,通过域名,域名里边做跳转,然后他可以到我们的本地,但是需要咱们做这两件事情,第一个把本地的端口号改成8105,第二个让你的路径跟我这个跳转路径写成一样,它就能够进到本地啊,所以多出了一个规则。
07:01
但是刚才我说到,在实际的公司里边,咱们不需要这么做。实际公司中你把程序。直接部署到你这个域名服务器上就可以了,但是这样的话我们没法测试,因为咱们有很多同学,所以我就想这个办法,所以各位按照这种方式,当你扫完二维码之后,它就能够调你的本地这个方法,然后调完之后在这个方法中咱能得到扫码人的信息,包括加到数据库,包括其他操作啊,这是我们目前的实验的方式啊,这是我们当时想一个办法,就大家把这知道啊。这里我特别标注一下啊,咱们这种。规则。只是为了测试啊,就只为了测试使用在实际的开发中。啊,实际开发中。就是它不需要这个步骤,咱直接把这个代码部署到我们的域名服务器上就足够了啊,咱只是为了我们所有同学都能测试啊,所以这个啊是咱们数学过程,所以大家按照我刚才说的,第一个改成8150,然后第二个在里边的方法的路径跟我这要一样,我这是APIU3的微信扣back,你必须要写上这个名字啊,当然这个log in写上无所谓,但是扣back必须要写它。
08:19
这个是咱们在里边。做的这么一部分啊,所以咱们左右说明,然后这个过程中大家再来看啊,当我这里边刚才我一扫二维码,它是到了8150端口,如果咱本地是8150,它能执行到只用我这个方法,但是你看啊,在他返回到方法后面给咱们是不是还带了一个参数,大家仔细看啊,这后面有几个参数。咱们仔细看啊,你看问号。第一个是不是扣的,第二个and符号是不是一个叫state,就是它给我们返回了两个参数,这两个参数中第一个是最有用的啊,就是一个扣的,那这个啊,我们在方法中给它接收一下,怎么接收呢?直接咱写两个参数,第一个string。
09:07
扣的。然后第二个string,这个叫做state啊,再用它复制,省得我们写错啊,State sta把两个这个返回数据可以得到这个啊,方法我们就初步创建了,然后为了明显,我在里边给他做个输出,比如咱们做个测试,看我扫码之后这方法能不能调到啊,咱一块儿试一下啊。我先输出一下,第一个是code,这到底什么意思,我马上解释,得先做个验证,看这流程能不能走通。然后这个是state啊,咱先把两个值做输出,包括跳转,咱一会儿实现啊。所以这个方法做到了啊。那咱们最后把这效果测试一下,也就是说怎么测试呢?我一会儿还是第一步先生成二维码,然后第二步,当我一扫第二维码,它应该会执行我们写这个扣back方法,这里边的规则是我在域名里边写好的,各位只需要把域名配置好,按照我刚才说的改成8150,改成固定地址,它就能够到你的方法中执行,那我们来试一下啊。
10:15
如果说这个方法执行在里边,我们应该会把这个code和state做个输出啊,这是我们目前的这么一个规则啊,但是这么做到的单位标注到了这种规则,咱只为了测试,在实际法中它不需要这么复杂,直接你把项目代码部署到运营服务器上就足够了啊,咱是为了测试,所以咱们想这种方式。那咱们啊,最后来试一下,看一下结果啊,就看方法能不能执行出来。好,那我们来试一下啊,首先我还是先访问我们那个就是。那个二维码那部分啊,二维码应该是,呃,这个二维码应该换了地址啊。Local house应该不是8006了,应该是那个叫8150啊,咱刚换了地址。
11:03
然后现在我回车。大家看二维码生成了,我这里边把它扫一下,然后点同意,大家看结果啊。咱就直接看控制台里边的结果,我们可以看到啊,在控制台里边大家看到两个值是不是输出了,一个叫code,一个叫state,也就是说它一输出,那就证明到了咱这方法是不是执行了,这个证明我们这个逻辑就走通了,比如咱后面在里边可以得到扫码人的信息啊,这个啊是咱们。做的这么一种过程啊,大家反正知道啊,咱们目前是这么来测试出来的。这张图我先保存一下啊,就是第五个。我们刚才做的就是。扫码之后。它这个跳转的规则,目前是这么一种方式啊,大家把这知道啊,就是你按照我这个改成8150,改成固定地址就能跳过来。
12:03
这个啊完成了,当然这个地址需要配置,对啊,我刚才说的,你写我这个源码中,这个文件中提供地址啊,比写我课件中,课件中的地址应该是有问题了啊,但那个其实也能跳,咱就用我这个T中的地址做个跳转。这个我们就完成了啊,然后这个流程走成之后呢,咱下面要做的事情就是在我刚才写这个扣back方法中,咱就来获取扫码人的信息,把这个所有人信息获取之后,最终再加到数据库啊,咱们把这个最终得到,那咱们看这怎么做啊,就最后来写这个核心部分。但是我强调啊,这个怎么得到扫码人的信息,在微信的官方,或者说腾讯的官方,他把过程已经给咱们规定好了,咱必须要按照他的流程把这个才可以做到,那怎么做给大家来做个详细的说明,然后咱们最后写代码,我就画一下这个过程啊,其实这个过程呢,在咱刚才说一张图上都有这图,咱最后再来看啊,咱先画图给大家说过程。
13:11
看怎么做啊。我这里写下啊,首先。第一步。就是当我们。扫码之后他会。执行我本地的那个扣back这个方法,刚才咱们验证是可以的,然后咱们在call back方法里边。我们可以获取到有两个值,这两值是在跳转的时候给我们传递过来的啊,传递过来有两个值,这两值我们可以得到,在两值中呢,我们目前比较主要的其实就是一个值,咱看一下啊,就刚才这两值一个叫code,一个叫state啊,那我解释一下两个值什么意思?先看第一个叫这个state。这个值什么意思呢?给大家说明啊,我说各位是否记得啊,咱们在生成二维码的时候,我们曾经传过的值叫state,当时我传的是不是叫at硅谷所大家看我这里边得到值是不是还是at硅谷,这个值我上上去我曾经说过它叫原样传递,就是你传什么值,后面给你反什么值,我们之前传的叫AP硅谷,后面得到也叫AP硅谷啊,这是第一个值,但是这个作用不是特别大啊,但这个暂时用不到,你知道啊,这是一个叫。
14:32
原样传递的这么一个值。第一个值啊,也要传递,但是咱们要获取增人信息,主要用到不是这个state,是下一个值很重要,下一个值叫code,这个很重要,Code是什么呢?就是你每次扫码之后,由这个微信它会给你返回一个code,这code咱们可以这么理解啊,它就类似于咱那个手机的。验证码啊,类似于它每次一扫码之后,给你返回一个是验证码,而这扣的值是一个随机的唯一的一个值,每次值它都不一样,所以咱们这code很重要,主要用到它往回的执行啊,这是我们的第一步,咱扫码之后在里边可以得到两个值,一个叫set,是原样传递,一个叫code,主要是code code的理解为每次扫码之后给你返回这个值,它就类似于在那个手机验证码,那个值是一个随机的为一个值。
15:31
也就是里边的这个扣的咱可以得到。所以这是里边的第一步,先把这个值得到主要是扣的。这各位知道啊,咱们刚写过,然后这个得到之后,下面我们进入到他的第二步操作啊,咱们看第二步怎么做,给大家画到这位置啊,我说第二步。然后第二步做法是什么呢?咱就是啊。拿着第一步获取到的那个扣的值啊,获取到的扣的值去请求一个微信提供的固定的一个地址,注意是请求一个固定地址,这地址由微信提供出来的,不需要我们去写啊,里边都有,我们可以看一下啊,有一段简单代码啊,一会咱会写,咱先大体浏览一遍啊,就这位置你看我代码中。
16:22
往下找啊,先得到我们这个扣的。呃,就是这个啊code的,然后得到之后,我们去请求一个固定地址,就是这个地址是微信提供出来的,在里边主要是传你的code的,包括ID密钥,然后这个传递之后,咱启用地址之后要得到一个东西,就是这个东西。叫a set token,还有一个叫open ID啊,把这两只得到,然后写一下啊,就是我们请求微信地址,然后可以获取到。有两个指啊,注意是两个指。哪两个值,一个值叫做access token,我先写出来,然后我解释啊,Access token。
17:06
还有一个值叫做open ID。这是我们请求地址可以得到的啊,Open ID那两个值分别是什么意思?解释一下啊,两值都很重要,第一个叫set,你可以理解为啊,就是一个叫访问的这么一个凭证。Token字符串access访问,就是你访问微信那个操作中一个凭证,第二个叫open ID,这是什么意思呢?给大家强调啊,因为各位知道每个人的微信是不是都不一样,但是有一点各位应该知道啊,就是比如说我现在我微信昵称,比如我叫这个什么,呃,叫什么响应名字,比如我现在微信我叫这个什么。呃,什么大爱无疆啊,然后你微信是不是也可以叫大爱无疆,这个名字就是你的微信名称是可以一样的,但是微信毕竟每个人不一样,它怎么区分每个人的微信不一样,里边有个值就叫open ID,就好比说咱们表中那个组件ID,这就叫open ID,它就用于去区分你的不同的微信。
18:11
就是每个微信那个唯一的一个。标识这个叫open ID,比如说我的ID是一个值,你的ID跟我肯定不一样啊,所以咱们第二步拿着code的值,包括那个ID密钥请求微信一个固定的地址,然后咱们可以得到两个值,一个叫access,一个叫open ID access to就是反凭证,Open ID是每个微信一个唯一标识啊,这是它的第二步,我们这么来做。这个位置需要启用地址,然后这步做到之后,咱们并没有完,还需要进入到他的第三步。然后写一下啊第三步,第三步怎么做呢?给大家写到下边啊,做法跟第二步有点类似,咱的做法就是拿着你第二步。
19:00
获取到的两个值就是一个叫access,我再写一下啊,Access talking。还有一个叫open ID,就拿这两个值,我们再去请求一个微信提供的固定的地址啊,就是还是请用一个地址,这地址也是微信提供出来的,那我们看一下代码中啊,这是刚才拿着code的启用地址,然后启用之后咱得到set to和open ID,然后拿这两值再去请求地址这个地址。你看这个地址啊,叫API微信qq.com sns user info请求它,然后启用它之后,最终就可获取到啊,最终才可以获取到你那个微信扫码人的这个信息。信息里边,比如说你微信的这个昵称,你微信的头像等等啊,这些信息都可以得到,这是他的第三步,所以咱们通过这个三步操作,才能把这个微信扫码人的信息得到啊,主要这么一个过程。
20:06
这个啊,各位给他先知道啊,也就是代码比较简单,主要是这么一个流程,这是微信规定一个过程,就是这个过程没有什么为什么微信他要求你用我的东西必须这个步骤,不是这个步骤你就得不到,所以咱们必须按照他的规范来开发,其实他这么多的目的啊,也是为了安全考虑,他经过多个步骤,多次验证,最终才能得到你最终这个数据。啊,所以咱们把这过程我们做了一个说明,它就是这么做到的。这是一个流程啊,然后这个说完之后呢,最后咱来看一下我们最后一张图,就刚才我一直说的这张图,咱们把它再看一下,目前应该能大体上看懂了啊,那我们看一下啊,这怎么做到的。首先这个图怎么看啊?咱看这箭头就是这个方向啊,这是第一个第二个,然后依次这过程啊,首先我们就是请求登录第三方应用,那什么意思呢?是这个词啊。
21:02
有一个词叫第三方应用,或者咱看这词。不知道各位是否知道这个词啊,什么叫第三方?第三方好理解,跟我们和他无关,那大家知道什么叫第一方和第二方,有第三方肯定有,第一方和第二方肯定有这个词。那这什么意思?给大家简单解释一下,比如说我们现在我们做这个登录,那登录你注意,比如说我现在登这个系统,系统本身和我就属于第一方和第二方,那比如现在我用微信登录,微信跟我跟系统是都没有关系,这叫第三方,比如咱用QQ登录,那QQ跟我系统和我都没有关系,这叫第三方,咱现在做的叫第三方登录,就跟我系统本身无关,有一个其应用来登录。然后现在就是看这图上请求第三方登录,然后里边用到这个auto to这种方式,这里边一个叫请求用户确认,那什么意思呢?也就是说当我们扫完二维码之后,在你手机上会有一个界面,需要你同意或者拒绝,当咱点同意就是用户确认才能获取到你的那个用户信息,如果你不同意点拒绝他就得不到啊,需要咱们有一个手动的确认,在你手机上点确定。
22:20
然后当单点驱动之后,它里边就指引我那个就是扣back方法,在扣back方法中怎么做这个过程啊,你看啊,这里边就是我们有一个叫code,就咱说那个验证码,或者说一个术语,它叫临时票据啊,那我写下写的就是写官方点code,它也叫做临时票据。就是咱说的验证码啊,然后这里边咱们拿着临时票据去请求地址,然后他可以得到两个纸,一个叫呃,Set toke,还有一个open ID啊,这里没写open ID,但是他可以得到,然后咱们拿着access token再去启用地址,才能得到你的最终那个骚人信息,主要就是这个过程啊,这是他画的官方张图,当然具体解释就是我这里说的这个流程,但用这个过程把我们这个代码最终就能实现出来。
23:12
这个啊,咱们把过程做了一个分析,就是怎么在扫码之后获取扫码人的信息,按照我写这个三步把这个做到。这个啊,我们做一个说明,然后在这个做的过程中呢,咱需要用到有几个技术点给大家说一下啊,这是我们一个流程里边,现在没有说到技术,下面咱说技术上它需要有一些东西,应该是我们之前可能用过,也可能没用过,给大家写一下哈。就是用到的。地处点。有哪些技术点呢?首先里边有第一个技术点。大家看啊,不管我是第二步还是第三步,咱们是不是都需要请求地址之后,然后得到你的指,是不是都需要这么多,而这个过程咱就不能在浏览器中再这么来请求了,咱需要用程序请求地址,然后得到值,所以咱们需要怎么做呢?我们用到的第一个技术就是这个技术。
24:09
我说各位师傅有印象啊,就记住我之前提到过,他叫这个HTP。兰用它去请求地址,然后得到结果。而什么是AP client呢?你可以理解为咱之前请求是在浏览器中写地址,然后回车得到那种,但是现在用FP的方式之后,你不需要浏览器,它也能做到,浏览器过程就是发送请求,然后得到结果。所以大要用到一个叫HTP可烂的一个技术。但是这个技术呢,并不复杂,它做法很固定,我在今天这个就是源码中给大家写了一个工具类,咱一会儿直接用就可以了,里边都是固定写法,一会咱会看一下啊,用这个技术,然后里边还要用到一个技术,就是第二个。第二个用什么技术呢?就是这个技术呢,可以有很多种方式,我们就用一个啊,就是一个叫Jason的一个转换工具,而第转换工具不知各位是否记得啊,咱们在是做那个,就是上次课应该是昨天做那个就是。
25:14
发送短信的时候,我们当时用了一个东西叫fast。就是做这转换,而咱们一会儿再换一种转换,就是你用fast真可以,但咱一会用这个工具叫个这两个都是这转工具啊,当然还有其他工具,我再写一个啊,不知各位是否记得。我一般读称叫杰克son啊,这是我们在比如说我们现在在里边写一个叫瑞的controller,它最终会返回真的数据,其实它底层用的就是这个杰克son的方式做转换,这些都是转换工具,但是咱一会儿用这个叫歌森做个这个这次转换啊,这个咱一会儿马上用到,大家先知道啊,所以里边涉及到这么两个技术,第一个就是HTP,咱能够发送请求得到结果。
26:05
然后第二个就是这一层的转换工具,用它来做一个这数据获取,因为咱反应数据中需要用到这么一种转换,才能得到里面的值。这个啊,我们做一个说明,所以就是在这里边我们主要讲到了第一个扫码之后,咱们怎么跳转到本地,包括咱们改端口号,改地址,然后第二个在我这个跳转到本地方法中,怎么得到扫码人的信息,咱把这过程给大家做了一个说明啊,就是按照过程咱们一会儿把代码来写出来。这个图我先保存一下啊,咱说的第六个。就是扫码之后。获取扫码人的信息就是这么一个流程。
我来说两句