00:00
那接下来我们对社交登录来做一个完整的调试,首先呢,我们将涉及到的服务also server和我们这个member这application,我们将这两个呢以debug模式启动,然后接下来来测试一下我们的社交登录,首先我们把微博这一块之前登录过的这个状态来给它推出。好,现在我们从我们的这个登录页来出发,来开始进行登录。我们先来访问我们的首页,鼓励ma com,好,我们来确认一下我们控制台,来控制台这一块呢,有一个启动报错,这个报错呢是我们这个member服务的,说我们这个log,因为我们抛了异常没处理啊,所以我们这一块controlrler有异常,把这个异常呢直接抛出去,我们来重新以debug模式来启动我们的member服务。好我们现在来梳理一下整个流程,我们先来访问我们的登录页。然后呢,我们在这来点击我们的这个社交登录按钮,会来到我们的author controller,来看一下我们author controller的这个微博的这个success方法,当然一下不会来到这,它先会跳到我们的这个微博授权登录页,先引导到这儿,好来点过来,然后呢,来输入我们微博的账号密码信息,包括我们这一块的验证码,我们来点击登录,那如果微博这一块登录成功,那就会跳到我们这一块的授权回调页,那这个回调页我们已经拿到code,拿code我们一直往下走,这样code呢,我们要换取关键的access token,走这access token只要换取过来,然后我们会把它转成我们这个社交用户对象,那接下来登录不登录,我们就要调用远程方法来进行来做这个事情,那这一块呢,没有来做这个远程方法,好,我们先把这一块来放行,来填上这一块的逻辑,我们这个社交登录这个信息封装好了,然后接下来。
01:53
来调用远程的这个方法,远程的这个controller,我们新增了一个叫author login这个方法,好,我们把这个呢复制过来,我们将它方法的签名,好我来复制过来,来到我们的远程服务,我们author controller想要调远程的会员服务,我们会员服务呢,都被抽取到了这个份下边好我们会员服务,会员服务呢,接下来又有一个方法,这个登录方法呢,它是要使用搜索user,好然后呢,同样的跟普通的登录一样,也得加上这两个前缀,这是它的完整访问路径,那接下来我们就应该调用我们这个远程方法去来做真正的登录,那登录成功就会给我们返回用户,好,我们来到also这一块,那么来进行真正的登录,我们先来注入我们的这个member phone service,好,Member phone service,我们的远程的用户服务功能把它注入过来,然后我们在这来来写上一个方法叫login,只不过我们现在叫o log,我。
02:53
是用社交用户来进行登录的,那这个社交用户登录呢,还是返回一个R对象,那这个R对象我们要这么来看,那先来判断,如果r.get code,我们这个状态码呢,是对的,我们这个R呢叫o log,如果r.get code,我们这个状态码呢,等等零,那说明我们都是成功的,否则那就是失败的,那失败了呢,我们重新给它定向到这个log页啊,重新来登一次就行了,好然后呢,成功,那么就应该提取我们登录好的这个用户信息,那成功以后我们就会跳到这一页,好,成功我们就跳到这一页,那这一块呢,我们就可以去掉了。
03:35
好,那现在呢,我们就在这来提取我们的这个信息,那怎么提取呢?在这个o loggan里边来点一个,我们先来看远程的controller,远程controlrler只要一登录成功,那么会返回这个实体类NT,那么将这个实体类呢,我们就来放过来这个OK,那我们给它里边放一个KV,那这个K呢,就是我们的data数据,好,那我们现在来放上一个data,最终这个data呢,还是返回我们这个R对象,那么现在呢,只要完整的返回我们这个ctrler,那么OK,再来给它set一个data,把我们真正要返回的数据给它放里边,这就是我们远程服务,给我们会返回整个用户的实体信息对象,好,来到我们的also to controller这一块呢,我们接下来get data就行了。
04:25
我们来获取我们data的这个数据。然后呢,我们把它转为new,一个type reference,那我们现在呢,是这个类型的叫member实体类这个类型,那这个类型呢,我们应该在这有对应的一个VO,直接将member entity这一块的整个数据好,我把这一块数据只复制它的这个属性,那我呢就叫一个member member response的VO,我们响应的这个VOVO数据呢与我们是数据库拿到的,直接将所有东西都响应,那么就拿过来,然后呢来一个data。
05:04
好,然后我们这个also CTR了,我们最终返回的就是这个member VO response VO,那最终呢,我们将这个数据抽取成我们get data,我们将data的数据抽取成我们这个member response为这就是我们登录成功的用户,那放到这个页面呢,我们还可以去来显示我们现在控制台输出一下们就叫登录成功,然后呢,用户信息,用户信息用户信息是什么?我们就把这个打印一下,把这个data呢来打印一下,当然我们来给它加上to string方法,这样就方便多了,At一个to string,那只要这一块呢,登录成功,我们就将我们成功的用户信息返回出去,那返回出去以后呢,我们接下来来到我们的奥兔CTRL远程的数据就有返回,我在控制台这呢,为了方便做了一个打印,当然我们可以来写上这个日志的方式,Self附件,好,我们这个日志呢,我们就叫log info,我们将这个登录信息呢,一打印log,点一个info。
06:04
我们就叫登录成功,咱们这个用户信息,用户信息是什么?好,我们就将这个用户信息我们给这一放data,点一个to string,好。我们现在呢,来重新启动我们这两个服务,一个是我们的author,一个是我们的会员,好,我来重新以北八个模式启动,我们还是回到我们这个页面,那这块服务呢,我们都启动成功,那启动成功我们可以先把他们的控制台都来清空一下。还有这一块的控制台,我们来清空一下,然后呢,我们来进行一个访问测试。我们还是从我们这个登录页先来进行测试,我们来等待一下,还有我们这个,我们也来把它清空,那现在来访问我们的首页,大家先把这个微博的登录状态来给它删除掉,退出。好,我们来测试,那们先来到我们的这个登录页,登录页我们来点击微博,跳转到我们这个微博的授权页啊,然后我们来输入我们的账号密码以及验证码,点击登录,然后跳回我们应用的这个授权回调成功的这个页,好在这成功呢,我们接下来换取token走,那这个token只要换取成功,我们接下来继续往下走,走到这呢,就会调用我们的远程方法,我来直接放行,因为我们这个第一次服务刚起来,远程方法呢,肯定第一次是读取超时,这就会抛异常,那么可以来看一下这个异常,异常呢就是read timeout读取超时,那就来把它放行一下,那来看下一次的结果,那这个下一次结果呢,那为了方便,期间我们给远程的这个服务,主要是这个member,我们来看我们是怎么走的。整个。
07:45
社交登录的流程,好,我们远程服务我们在这儿,我来打一个断点,现在我们来重新来做一个测试,那开始来重新登录,好我们也不清空这个微博的登录状态了,那么直接登录的话呢,我们就不用跳转到授权页了,我们直接跳回来,来看我们的回调,来点微博好登录成了,然后呢,直接来我们这回调扣德码我们也拿到,然后呢来换取token,这一块呢,只要状态成功好,一切是成功,那接下来我们这一块要调用远程服务,我直接来放行,好跳到远程服,我们来看social userz,这个呢,是上一步换取来的access token封装了的详细信息,我们有UID,有它的access token哈,都有,然后接下来我们要进行登录,我来step into进来,当这一块呢,先是进入我们的这个代理模式,我们现在来进来,我们给这一块打一个断点,直接放行过来走,先来到我们真正的这个服务,那我们现在数。
08:45
据库,我们先来看一下当前的社交用户的UID,它是一个639763,这个我们数据库里边呢,从来没有一个639763的用户,诶我们上一次呢,那个虽然是读取超时,但是这一块已经做好了事情了,那我们为了方便把这一块做好的来删一下,相当于数据库呢,现在没有这个社交用户,那没有这个社交用户,我们在这儿就得来做一个判断啊,那先来进行查询,看我们数据库里边有没有当前这个社交用户对应的记录,走我们发现呢,这是空的,没有查到,没有查到呢,我们就准备注册一个,然后呢,我们来拿到token,拿到UID这些信息,这两个信息呢,我们主要拿来调用一个远程查询,我们希望呢,去微博里边查到他的一些远程信息,好,这个远程信息接层数据已经拿到了,然后呢,我们接下来把它转成一个接省对象,我们获取微博对应的昵称和性别,好,我的微博昵称性别也都有,我设置到我们当。
09:45
填到用户里边,那设置好了以后呢,再将它的关键的UID信息啊,这些也都保存好,保存好以后呢,我们给数据库里边插入,那只要一插入成功,我来刷新一下,好,那这个记录相当于我的这条用户,那我们就在数据库里边有一个对应记录,包括我们的昵称,那都是默认的,还有我们的这个性别,好,我们这也插入进来了。
10:09
那是一个一,那么这一块呢,数据就有了,然后我来放行,那只要这一块成功,那我们这一块呢,就登录成功,登录成功就会来到我们这个页面,但我们是debug模式,它总是呢读取超时来到错误眼,这无所谓,但如果我们是第二次来进行社交登录。好,我们再来测试一下。好,我们再来测试,我们现在呢,用户已经在我们这个数据库中,已经有这个用户了,已经有我们这个639763这个用户了,那假设呢,它的这个access token过期了,过期呢,或者是我们自己退出了,我们自己退出我们就可以把它置为空,好假设这个过期了。来刷新一下保存,那我们接下来要做的事情就是我们现在来再来进行社交登录,假设我们上一次退出了,我们现在重新来登录,我点一个登录,还是来到我们的这个授权,毁掉拿到这个code,我们这个授权码,然后呢,我们来主要来换取access token啊,这一步呢,换取成功,换取成功以后呢,转成我们social user这个对象,这个对象里边access token好都有,然后呢,我们接下来放行,我们去远程服务进行登录,远程服务呢要登录我们再来放行它service是这么处理的,先来拿到我们这个UID,只要是同一个用户,UID永远不变,这个639763这个UID呢,我们先来看在我们系统之前注册过没有,我们一查,诶,我们发现呢,已经查到了这个用户,那说明我们这个用户在系统中有,那有那就认为他登录了,相当于他这次就登录成功了,登录成功呢,我们接下来再要往下登录成功呢,我们要改变一下他的这个信息改变。
11:51
什么呢?因为这次登录的access token,我们上一次比如退出已经没有access token了,所以呢,我们把这一次的access token来保存到数据库,方便我们下一次拿到这个用户的X token继续来使用,好然后呢,把数据库先一更新,数据库先一更新,保证我们拿到最新的X token啊,没问题,而且呢,我们更新的就是这个用户的,好然后呢,接下来我们再把当前用户的这个信息直接返回,那相当于数据库就是对应这个用户,我们给他返回,那这就是我们的第二次社交登录,那只要第二次登录,我们来到我们的这个流程来点社交登录按钮来到这儿,然后我们跳转微博进行登录,登录成功以后呢,我们跳回这,跳回这我们就要处理登录成功的回调,然后接下来如果第二次是成功的,那直接返回,如果你是第一次登录,我就给你做一个注册,所以呢,我们现在只要是成功了,我就可以来直接给他来进行一个返回走。
12:49
返回当前用户信息,我们就来返回登录成功的页面,好返回登录成功页面,那这就是我们的社交登录,核心呢,就是由我们这一块的注册流程,当然这个成功页面我现在先把所有的北八哥断点我来去掉。
13:07
我们来禁用掉所有的断点,那然后我们来做一个完整的测试,好,那现在来测试一下。比如我们来写一个鼓励妙。好,那现在呢,假设没登录,我们想要社交登录,我点一个请登录,然后呢,我们只要点社交登录,而且我们只要登过微博,我们还免登了,我只要一点,我们发现它这一块呢,先跳转到我们的这个方法,那这个断点还没去,好,我直接来放行,然后呢,我们来看直接跳回到首页,只要大家看到是这个效果,直接跳回首页,那说明我们社交登录成功了,好,那就应该是这样,我们没登录,我点社交登录,然后呢,只要登录成功就跳回首页,首页这一块应该显示你好,谁是谁。所以说这一块呢,应该打招呼,但这一块招呼该怎么打,我们后来还要详细说,这又是一个大问题,因为我们呢,相当于是登录我们从这一块域名also古mail,我们又跳回了我们的古mail com跳到这儿。
14:09
所以呢,这一块登录成功怎么处理,我们后来再说,那先放到这儿,那么最终呢,整个完整流程就是我们社交登录的回调这一块,只要成功了,我们就换取来X token调用远程服务来进行处理就行了,这是社交登录成功毁掉。那只要登录成功,我们换取来恩ton来交给远程处理,远程判断是注册还是登录,无论是注册还是登录,远程呢,最终会给我们返回这次登录或者注册成功的用户信息,这用户信息呢,我们之前在控制台也都打印过来,看到登录成功是谁谁谁,包括呢,主要有这个昵称,如果我们跳回了鼓励mail com这个页面,我们还能把这个昵称显示在这儿,那不就成功了吗?好,我们后来再说我们这一块的问题,那么社交登录的流程就结束了。
我来说两句