00:00
就是咱们下面要做什么呢?首先第一个啊,因为咱刚才说到了,我们做微信操作呢,里边需要ID密钥,包括里边这个地址,而这些值应该都是固定的,所以大家还是用之前的方式,把这些值呢,我们写到一个配置文件中,然后写这么一个类,通过类里边做这个读取配置文件得到这个值,咱之间写用这种方式,所以现在我们还这么来做啊,就把这个做到。然后写一下啊,因为咱们现在做的是登录部分,所以我把这登录还是写到我们这个U3模块中,在这里边咱做这个登录啊,就是我们的这个模块我们找到啊。U center模块里面都登录,因为都是登录部分,那咱在里边写一下啊,我想这位置首先我们做的第一系就是在这个service。U center,它这个模块的配置文件中,咱先写上它那个微信中那几个固定值,就包括微信的ID,微信的密钥,还有他那个域名的地址,把这几个咱先写到配置文件中,然后写完之后咱就创建一个那个类来读取这个配置文件中的那种,把这个做到这个过程之前咱都写过下面啊,我就快速写下啊。
01:22
首先来到它的配置文件,就U3这个配置文件。然后在里边呢,把那个微信中几个固定值,我们给它写过来,我就从那位置复制一下啊,比如说我们叫这些名字,然后写上我们里边那几个值给它写到就是。这个位置啊。然后我把这值我从我这个源码中复制过来啊,我是放到了源码里边。微信登录这个T中,咱复制啊,第一个是这个ID。这个我给他复制过来啊,就是到我们这个位置,注意后面前面不要空格,然后第二个是那个密钥,这个啊,我把密钥也拿过来。
02:08
然后第三个是一个域名的一个地址啊,我们现在咱们固定写这地址给各位,把这个都听出来。所以这样的话,把这三个固定值我们就写到这里啊,待会我强调在实际的公司里边,这几个值应该都是由公司提供好的,包括公司申请之后有ID密钥,包括有公司那个运营地址,我们写上公司就可以了,当然这些东西呢,肯定对于一个公司来讲,都是一些比较核心的机密的部分啊,就是这些肯定不能工司里边随便提供给别人啊,因为咱是学习计算嘛,所这给大家提供出来ID密钥和地址,这个我们做到了啊,然后做到之后呢,下面我们写个类,在类里边读取这个内容。那我们写一下啊,我就在YouTube中咱们创建一个工具类,比如起名叫这个constant。这个叫做微信。
03:00
Us叫这个名字,然后写完之后呢,按照之前做法,然后这个类咱是不是要实现一个接口。这个接口,那我们来让它实现啊。就是实现一个接口,这个接口。然后实现之后,接口中有个方法,就那个叫al这么一个方法。把这个实现,然后写完之后,咱写里边的结构,在类上边加个注解这个。Confidence在我这类里边加上属性,然后用词文里边的Y6注解读取里边的值啊,就是我们之前的过程啊,这个我就不再敲别了,这些咱都写过啊,就这几个,我把它直接就复制了啊。咱们写几个属性,然后用Y6注解读取配置文件中内容,注意Y6注解是spring里面的注解。就这些啊,然后咱们检查一下啊,名字别写错,第一个是。微信open.app小号线ID啊,第二个是这个密钥,第三个是ul域名地址,这些都正确,然后写完之后,下面我们写几个常量,在al中做个赋值就可以了啊,这个我就不敲了啊,直接复制了,别人都写过啊,这也比较简单。
04:13
这个拿回来,然后最后在al里边我们做个赋值,首先第一个就是那个ID。我们叫这个微信啊,看他名字啊叫APPID。这是第一个啊,然后下面都一样,咱就依次复制可以了,把这个啊拿过来,所以这样的话,咱把这个工具类就写出来了,读取配置文件中的几个值,为了咱一会儿操作中使用啊,这个就是准备工作咱做到啊。然后做到之后,下面咱们往下进行开发,咱看这过程该怎么去做啊。那我觉得各位应该能想到啊,微信登录嘛,首先第一部分咱要微信登录,咱是不是要扫二维码呀,那你扫二维码是不是要有个二维码呀,所以咱做的第一步就是要生成你微信扫描的二维码,把这个要做到啊,这是我们做到这个步骤。
05:07
然后写一下啊,在这个位置。就是咱们要做微信登录,对应我们的第三步,咱肯定要生成一个微信扫描的二维码,把这个定要生成,你有二维码之后才能扫,没有的话肯定你没法扫,那怎么来生成,咱们来说一下啊,先看一下它的文档中,其实做法呢很简单。我强调怎么做啊。就是现在呢,我们要生成还是码在微信这个操作中,或者在腾讯这里边给咱们提供了一个固定的一个地址,就是这个操作,咱向地址中需要给他传一些参数,而咱们直接去请求这个地址就能上二维码,比如说你看啊,咱看这部分,这个是一个固定的地址,是不变的,后面传递这几个参数,然后咱与请求这个地址就能够生成二维码,咱们就这么来做。
06:02
然后里边的参数里边都列出来了,咱们看一下啊,地址是固定的,然后用问号拼参数来看参数,第一个参数。APPID。就是咱说那个微信ID就是他。第二个参数叫ready right u就是咱说的域名地址,也就是这个地址。但是这里写到啊,这个地址咱请使用ul e code的对它进行处理,就是它需要做个编码URE扣的是一种编码方式,就好比咱之前说那个。贝64都是编码方式,咱需要做个编码啊,这是第二个,第三个叫response type,就是返问类型,当然这里写到它这里边填的是code是固定的,你不能填别的纸,然后下一个叫scope。这里写到啊,因为咱们现在做的是网页登录,所以网应用中写的就是这个值是固定的,最后一个叫state,但这个值啊,这里写到是否必须,是不是否啊,就这只可以没有啊,这只什么意思呢?它就叫做原样带回,就是你传什么纸,后面也会给你反映什么纸啊,主要几个参数,主要是前面这几个,而咱需要传的就是两个APPID和你的域名地址反两传递,这两个是固定值。
07:18
啊,所以咱们啊,就是这么来做,我再说一遍啊,怎么生成咱们做法就是。写到这里啊,去直接。请求微信提供的一个固定的地址,然后像这个地址的后面给它拼接一些参数就可以了,这样做把这个就是二维码就能生成啊,这是我们的这样的方式,那咱们下面把这个我们来写一下啊,咱就通过写一个controller里面的方法去请求这个地址,然后把这个。二维码生成啊,那来实现啊,我们来看一下啊,就是现在怎么做呢,为了明显我在里边呢,再重新建个control,专门做咱的微信这个操作,那我来建controller,比如说controller,我给他起个名字。
08:07
啊,我就跟课件中写成一样的啊,就要这个微信A片CTRL。叫这个名字啊,然后取完之后在上面加注解,加这些什么路径啊,这我都拿过来啊,把这个我们先加上。主要是他啊。那这个啊,我先这么写啊,咱先加一个叫瑞啊。把这个先加上,这是咱们之前的写法啊,加一个control,加个mapping,然后加一个跨域的叫cross,这个注解,这些都写出来了,然后写完之后在里边我们写第一个方法就是生成微信扫描到。二维码把这个生成,那我们写一下哈,在里边呢,我们写一个提交方式,然后里边起个名字,比如说名字我就叫这个,呃,就叫捞印了啊,叫这个名字,用这个方法来生成一个二维码,那我们来生成啊。
09:01
下面写方法。但是各位注意啊,这个写法中跟咱之前是有点区别了。你注意之前的写法,咱之前CTRL了,每次返回是不是R对象,而咱R对象的目的是不是有一个统一的返回结果呀,里边是不是一段这份数据呀,但是咱目前要做二维码生成,咱们并不是想返回数据,咱是不是要给它直接生成二维码呀,比如刚才我说到的,咱就要去请求我们这里边这个固定地址,它不需要反应数据,它是去请求地址来得到,所以咱们现在这里边就不要写R了,因为R是反应数据,我们目前不是反应数据。希望各位能听懂啊,因为反应数据写二,咱不反应数据咱可以换个类型,我说各位是否记得啊,这是在YVC阶段讲到的,比如写个string。后面我们加上一个方法,比如叫这个K的这个微信这个二维码啊,就叫微信这个。
10:03
扣的二维码。在里边我们来做操作,但是操作中我们要怎么做呢?刚才说到咱就是直接去请求一个地址就可以了啊,就是请求微信的一个地址可以了,那怎么请求呢?给大家写一下啊,我先写一下,各位看一看你是否还记得啊,这是在框架阶段讲到的,比如现在我来一个。然后里边加上这么一个关键词,这个关键词叫做redirect。啊direct,然后加个冒号,冒号后面比如加个地址,假如说啊地址是这个地址HTTP冒号杠杠,比如是一个什么local house这个。3000。问各位啊,这个不知道各位是否记得啊这个写法。应该是我们。在spring阶段或者spring VC阶段应该提过这个东西啊,这个我特别说一下啊,这句话什么意思呢?它就表示现在我们通过re退又可以怎么样,Direct是不是叫重定向了,重定向到地址中去,也就是说用这种方式去请求你这个地址,咱现在就这么做,用redirect重定向到这技术中去啊,就是咱们写微信固定地址,把这个可以做到,这是我们的实验方式。
11:22
这里边不要写R,因为咱们不是反应数据,咱要去请求地址,那怎么请求写个词,然后写个rect,重定向到你请求的地址中去。啊,重定向到请求到微信地址里面去,这是咱们的做法,那下面咱们它完善地址肯定不是这个地址,是他的固定地址,那把地址给大家写一下啊,这位置我加个string。比如叫ul。等于。咱那个地址啊,然后地址呢,其实就是里边的,刚才咱们看到的。我把它先复制啊,就是这个地址。
12:02
就是他。然后刚才我提到在地址后面,咱需要拼接参数,就是固定的地址后面。拼接参数,那怎么拼接呢?给大家强调啊,有多种方式,我先写一种比较原始方式,再写一种比较这种简便的方式,那我都写一下,先写原始方式,那原始方式怎么做呢?在后面拼参数,希望各位知道啊,第一个参数。是问号,比如说啊,我们是假如说啊,A等于这个一,然后第二参数加个and的括号,比如说B等于三,然后再来一个什么C等于幺幺,咱参数是不是要这么来做,用这个问号and的符号名称值名值结构做拼接啊,咱就是这么来做,那这参数咱找具体的参数到里边找一下啊。咱们看啊,第一个参数。这个参数叫APPID,那我来做个拼接,就问号后面我们加个APPID,等于你那个APID值,而这个值呢,咱刚才有工具类,那我通过工具类我就可以直接取到啊,就是取这个值给他拿过来,就是点上这个。
13:13
ID啊,这是第一个值,然后后面继续拼接它的第二个值,我先给他啊。然后下面俩第二个值我们加一个。And的符号,然后咱看第二个值啊,它叫这个值叫这个外的URL,包括这些值以此类推啊,假如说我先写这个这个值,它等于的固定值叫扣的,然后咱们以此类推,都是这么来拼接,这是第一种方式,咱们可以这么做到是没有错的。各位有能看懂啊,就在这个路径后面加上问号,加上按照符号做拼接啊,这也是外部的知识啊,直接拼这个字符串做到,但是这么做的话呢,它的缺点是什么呢?因为咱的参数很多,你要这么拼接啊,就很容易写错,比如说这里边多了一个,少了一个它肯定就不对了,所以咱们这种方式,但实际说肯定不建议,而这么做效率很低,每次你拼接啊,这种做法肯定是不可取的,所以咱们不建议这么做,但是他可以实现啊,这个功能肯定能做到。
14:14
那咱们下面要怎么做呢?给大家来说,第二种方式,也是咱们后面要用的方式,或者说是开发中比较常见方式啊,当然你说我就用这种方式做没有错啊,那我说一种新的方式啊,大家看怎么做。这种方式做法啊,咱先快速浏览一遍啊,看它的做法,首先第一步你先定一个固定的这么一个地址,然后在地址后面把参数位置都给它加上这么一个符号,大家这个写法啊,这是固定地址,这些是参数,而在参数后面你看有个东西叫百分号S。大家能看到啊,就是这个,因为ID和这个地址咱需要传递,所以加个百分号S。百分号S什么意思啊,也可以理解为啊,类似于咱说那个问号占位符表示里边要传参数,这是它的第一部分,然后这选完之后,因为咱地址需要做这个编码啊,咱往后看最中向这个100S中传参数怎么传,用这个方法叫string.form。
15:18
向你的地址中问号里边传参数,因为这里边我有三个,那我们就传这个三个参数,这个是它的一个拼接方式,当你这么做之后,这地址中既有我们这个。固定东解,还有后面这个参数,最终用它就可以生出来啊,这是一种写法,然后后面都这么来做,那我给大家来写一下啊,首先第一部分这是固定的,我就把它复制过来。这是固定的啊,不需要你去敲固定写法,而这里边我们这个位置有一个叫百分号S。你可以理解为它就相当于我们那个问号占位符。啊,相当于我们那个问号代表是一个叫占位符,就是这位置要传参数,这是里边的第一部分,然后起完之后呢,咱这个位置我们可以用一个方法就是准。
16:14
里面的方法叫format,你看啊,Format中呢,有两大个参数,第一个叫format,第二个是一个叫可用参数,里面可以有多个,就是传参数,那怎么写呢?在里边第一个,所以那个被CL,就是你的最基本这个值,然后写完之后,后面加上你传的参数,就是你百分之S种植,因为咱有三个,第一个叫APPID。把这个取下啊,APPID点上。然后第二个板块S是这个URL,那我们取一下就是里边的。这个值ul,另外还有第三个是一个state啊,其实这个目前没什么用啊,我也给他传个值,比如叫这个at。这样的话,我们这么做之后,它会有个返回值,这返回值里边就包含咱们这个固定地址,还有里面的参数,以及参数中咱们设置的值,用这个我们就可以做到啊,所以它里边是这么一个。
17:13
基本做法啊,咱把它做一个说明,大家把这知道啊,我再说一遍,咱们就是目前的做法,就是需要请求一个固定地址,并且后面拼参数,这地址是固定的,参数也是固定的,那第一种做法可以直接用字符串拼接,这么做没有错,当然这么做的话呢,第一个效率低,第二个如果你参数很多,很容易写错,所以咱们开发中更建议这种方式,但这种怎么做呢?第一个你先来一个地址,帮我把参数位置加上百分号S。FS相于问号正位符,然后用个方法叫string.form向你这地址中的FS中设置你的值,比如说你看第一个这个参数中是ID,第二个参数是地址,第三个参数我们加个at硅谷,这样的话把这个就可以做个拼接,然后最终它这个地址里边就包含咱们的固定地址,还有里边这些参数啊,就ul咱最后重庆项就可以了。
18:12
啊,里边这个写法,这各位给他要知道啊。就是设置百分号S。里边这些值。是咱们一种新的用法啊,后面咱肯定都这么用,但是过程中呢,还有一个地方,咱需要看一下文档中啊,这里写到说这个re uri需要咱们对他做一个编码,这是必须的,不编码它有问题啊,那我先给他编码一下,我先编码,然后说这编码是什么目的啊,咱做一下,那怎么编码里边代码中啊,用到这么一个类,它就叫做URL,已扣的里边加,已扣的加,你要编码这个地址就可以做到啊,那我们来。做一下啊。解压。对,这个redirect。
19:01
URL进行一个已扣UR已扣的这个编码。那咱们把这地址先给它取到啊,我来一个string,就是叫这个direct。啊,EL。等于咱也通过这个工具类把这先取到。啊,就是这个地址。就是它,然后取到之后呢,对它这个编码做法就是用这个叫ul已扣里边有一个方法,这方法就叫做已扣的这个方法,然后方法中两个参数第一个。你要进行编码那个字符串,把这个传过来,然后第二个是你那个编码方式,我们叫UTF杠八。这个我应该见过啊,编码或者说JBK,然后编码之后它就会返回我们这个值,比这个值我就叫redirect。U。这样的话就可以了啊,然后最后你把编码之后的值传过来,因为他要做一个编码。
20:03
这样的话,咱们完成了这么一个过程啊,当然这里边有一个异常,我给他写一个try catch啊。捕获一下这个异常。开。然后开始里边捕获它那个exception。把这个给它拿到这边来。这样的话就完成了啊,所以这是我们写的这么一段基本代码,通过地址向里边传参数,最终请求这个地址又能够在网页中生成一个二维码。但是它里边这个地址需要做个编码,叫UREO等,而编码什么目的呢?其实就是把里面特殊符号做一些处理啊,这咱马上看到。这个写完了啊,然后写完之后这个方法就完成了,那咱下面把它来做个测试,就是我现在在网页中直接去访问这个地址,然后在网页中就能根据地址生成出一个二维码来啊,它就是这个做法啊,那咱们来最后试一下啊。
21:06
我把服务器启动,然后咱们测试啊。这个过程都要会写这种写法,后面咱都这么来做,通过点formate把这做到。那咱们啊,先做个启动。嗯。啊,这个啊顶出来了,然后咱访问我现在端口号应该是这个8006,然后在里边的地址,这个地址啊叫apiu微信loe,那我来访问一下啊这个地址。我们来访问啊。你就写一个,呃,3000不是3000啊,是那个。呃,多少来着,又忘了。80068006想起了8006。然后在里边呢,加上咱刚才那个地址啊,刚才地址复制一下啊,这个地址apiu center微信。
22:03
再加上一个叫做login。然后咱们回车,我们看结果啊,但是大家发现啊,好像这个结果挺失望的,因为咱们要达到效果,是不是有个二维码呀,但是里边没有二维码,但是你看里边是什么,大家看啊看这部分。这部问是什么呢?咱清楚看到啊,叫RI冒号,你看后面是不是咱的地址,也就说我们会发现啊,这地址它给咱们直接返回数据了,返回是不是字符串了,并没有做到重庆项目咱的正确效应该怎么样把这地址是不是要请求才可以,但是你看目前他没有请求,而是直接把地址返回了啊,这里边回问题,咱马上说到大家看啊,这地址其实是对的,这是我们拼接之后的地址,你看地址中有ID。但是大家看这地址啊,这个ul中刚才我说到做了编码,什么叫编码呢?你看啊,HTP后面应该是冒号,是不是杠杠啊,他把那个冒号杠杠变成这种字符,包括后面的斜杠都做了这个。
23:07
就是编码啊,就让他一些特殊字符做了特别的处理啊,这叫编码,然后现在是这个问题,他现在地址是有了,但是没有请求,为什么没有请求,咱看一下我们这里边啊,咱检查一下里边有个地方啊。这里注意,我写rewrite,理论上应该会重定向到地址,但是目前没有重定向,它是为什么呢?大家往上看,咱看这个注解跟他有关。各位注意啊,这注解咱们第一天项目中我提到过,我再说一遍啊,大家看这注解呢,主要两个作用,第一个创建对象要给使用管理,第二个是做数据返回,要通过response返回数据,但是现在呢,我们这里边我是想请求地址,并不想反应数据,所以咱现在就不要写这个注解了,咱需要换个注解。
24:03
换什么注解,就用这个注解。Rler,因为ctrler调管理,咱现在不需要返回,就你不需要加这个response包底,只想请求数据,或者说只想请求地址加上CTRL就可以了,这个各位注意啊,我写一下。就是我们现在只是是请求我们的地址啊,而不需要返回数据,所以说你就不需要加那个rate crler加个CTRL就可以了啊,这是一个各位特别注意的地方啊,你看我们之前写的。都是这个瑞controller,咱的目的是什么呢?因为每次都需要r.OK。或者I点挨着把数据返回,但是现在不需要反映数据。是请求地址。所以加上CTRL啊,这样的话就可以了,刚才是这个问题啊。然后咱们把这个加上之后,咱再重新测试,看一下最终的结果。
25:00
因为咱刚才看到地址都有了,参数也都拼接上,只是说没有请求咱现在给他改一下啊,最终试一下。这个啊启动啊,然后启动之后到这里边,比如说现在我重新刷新,大家看结果,你注意啊,在这结果中,各位看是不是二维码生成了,然后你看二维码下边像一个叫我的鼓励这个啊,就是我们要做的事情,有同学帮我扫了,后面工作还没有做的啊。就这个啊,是我们看到二维码,呃,那我重新再刷新一遍啊,你先不用着急扫,后面有你扫的时候啊。我刚才没说完,我再刷新一下啊,大家看啊,在这下面是不是叫我的鼓励啊,给我的鼓励就是我们申请那个网站应用的名字,我第一次说那准备工作在里边会显示,然后二维码是不是就生出来了,这个啊是咱们做的第一部分生成扫描二维码啊,主要这个过程啊。然后这个代码大家主要知道,我刚才这种写法跟咱之前有一点区别,你把这个方法记住,它就可以向这个百分号S中设置参数值,用这个啊,我们可以做到。
26:10
所以咱们完成了这么一段基本结构啊,就是这个代码。然后我把这个代码啊,核心部分给大家截一下啊。它主要就是。第一部分我们是写了这个固定的这部分。然后写完之后呢,下面做了那个具体一个拼接,用到先做一个编码,然后用到这个润点form。把这个做了一个参数的拼接,然后拼接之后,最终我们去请求这个地址啊,就得到我们的结果,但是请求中呢,有这么一个特点,各位注意,你在这里边不要写risk CT,我们要加个ctrler,因为咱们要请求地址,你加risk这个不会请求,它只是反映数据。啊,所以主要这么一个结构,咱现在啊把这个就完成了,生成微信扫描二维码啊,这是我们做的第一部分啊,这一部分比较简单,各位能把这个做到主要里边这个写法,包括这个CTRL注解给它都注意一下。
我来说两句