细讲oauth2.0

在发展快速的互联网下,我们大部分应用都希望快速获取用户,但在应用初期,我们的用户都希望很方便的使用应用提供的服务,在大部分应用都有自己的会员体系,导致用户需要填写比较多的信息,这时候一般用户可能不太愿意提供这些信息,但有想使用当前的应用,在这个情况下,应用为了方便用户的使用自己的应用就开始接入各种第三方平台(微信,微博,QQ,支付宝,其他等等),在第三方平台获取用户信息。

中间有这样的问题,如果我想拿到第三方网站上的用户信息,就需要用户填写第三方的账号和密码,但出于用户不了解当前应用所有用户是不会再本应用输入第三方平台的账号密码的。

再这样的需求中,就诞生了oauth2.0,他为我们解决这个获取用户信息并且,应用要拿到用户的信息必须要用户同意才能通过第三方平台获取到用户信息,也可以理解为资源(图片,语音,视频,文件,等等信息)。

在oauth2.0中有三个角色,用户,资源,应用,

用户就是要是登录到应用的用户

资源就是用户在第三方平台保留的资源,例如(QQ,微信,微博,支付宝)

应用就是,企业或者个人要开放的应用

在个过程中如果应用想要获取用户就要到第三方平台中申请一下APPID和APPKEY

有了这些东西以后,我们就可以进行应用开放接入了

我们通过第三方平台给的API接口就可以获得第三方平台发布的code,接下来我们就可以获取第三方平台颁发的Access_Token ,这个令牌,是我们接下来要获取用户在第三方平台存放的资源钥匙,接下来我们就可以获取到用户存在第三方平台的资源了,API可以查看具体的第三方平台接口,在带上前面获取的Access_Token,最终就会获取到第三方返回的用户数据,需要说明的是在获取code的前提是,应用回通过APPId加上回调地址,访问第三方服务提供的登录界面,上面会显示本次用户要授权那些信息给当前应用,如果用户同意授予,并且登录成功,第三方平台才会返回code,到回调地址上面,在回调地址接受到code在请求API,拿到Access_Token 。

 

 

关于团队开发利用git的webhook,部署项目

最近刚刚入职一家初创企业,由于项目特殊项目开发比较急,多人开发导致每天都会出现多人文件丢失和错误的问题。

我们先聊一下webhook是什么东西又能帮我们解决什么问题,在多人开发的过程中我们可能职责明确,有前端和后端开发人员,前端人就是我们看到的图片动画之内的东西,后端就是我们通过我们输入的信息给我们回应的内容,就是在我们的开发过程中,我们后台渲染一个视图模板,前端根据PS图片实现效果,我们的交接点就是我们后台会给前端一些数据,如果一个人开发就没问题,反正都是自己写,怎么方便怎么来,但是我们是团队开发,可能同时有多人进行开发,开发的过程就会产生,同一个文件多人开发编辑并且提交到我们的服务器,就会有有重复代码,或者删除或修改对方的代码,这样我们的git就诞生的,为我们解决多人同时开发的过程与到的问题,在我们开发能内网测的项目git,使用起来也不错误,可是问题有又来了,我们开发的项目依赖第三方平台,而且我们又是多人开发,这样我们原来只用git解决的问题,开始满足不了团队开发项目了,这时候我们就考虑利用webhook实现自动部署代码,

看名字就能大概猜到web就是网页的意思hook翻译就是钩子的意思,如果一起读就是web的钩子,我们知道由来了,我们在来看看我们要怎么实现这样的设计,首先我们在内网搭建一个git服务器,让内网的开发人员内提交代码,这时候他只有提交,但是我们外网的怎么访问呢?让人通过FTP在上传吗?,这样的效率太低了,也不可行呀,那还不如用FTP上传算了,这时候我们的webhook开始出场了,webhook有多个触发的动作,就是我们每次提交代码在GIT服务器,会经过四步,

第一步 git add -A

第二步 git commit -m ‘本次提交的说明’

第三步git pull origin master 拉取远程代码(就是git服务器上的代码)

第四步git push origin master 提交代码到git服务器

通过这几步我们发现等于如果我们开发人员修改代码提交到git服务器的时候,我们就需要外网的服务器也马上同步最新的代码,所以我们在git项目中添加一个webhook动作就是git push origin master的时候,我们告诉线上服务器马上更新我们最新提交的代码,这个时候我们的本地开发就和外网的服务同步了,我们就可以实时的查看我们修改的的效果了,这个过程因为我们外网的是内测地址是没有问题,如果是线上的正式项目不能这样干的(^~^)我们这里的测试服务器也在内网上面,所以其实我们是同步了内网的测试项目,正式项目我们是通过分支来解决的,在内网的测试地址完全测试没有问题我们才会合并到我们的线上项目,在合并的过程中,我才开始正式的同步线上代码,这个过程看似复杂,但是在这样多人开发,是比较适合的。