原理

首先,我们的目的是通过第三方账号的授权来实现用户的登录操作,也即用户不用直接创建我们网站或应用的账户,而是直接通过原有的第三方账户来登录,比如微信,qq等。
其原理图如下:

原理简单讲就是先跳转到第三方应用(如qq)的登录界面,然后用户输入账号密码登录成功,并且统一授权,第三方应用的服务器就会返回一个code给我方服务器,我方服务器再带着这个code去第三方应用的服务器去换取一个access_token,获取这个access_token之后我们就能够使用被授权的各种功能,比如查看用户信息这些,具体能够进行哪些操作要去看第三方应用提供的api,然后根据接口调用,调用时都需要带着这个access_token去操作。
而对于我们这里登录来说,我们获取access_token后,就去获取一些信息来创建一个我们网站的新账户,首先我们需要一个它再原第三方应用中就是unique的信息,比如id,然后还可以获取头像这些信息,然后注入到我们网站的给他新创建的哪个账户中,之后用户登录的时候也是先获取第三方应用中的信息,然后看看我们网站的用户数据中有没有哪个账户的第三方应用id字段等于这个用户的第三方应用id,有的话就直接登录,没有的话就要给他创建个账户。
总之,不是不创建账户,只是将其第三方账户关联到我们的用户账号中,自动从其第三方应用的账户中获取创建我们用户账户所需要的字段,然后帮用户省去自己创建账户的繁琐过程。那么这就要求我们从他的第三方账户中获取得到一个能唯一标识其身份的字段,比如前面说的id,这样才能唯一关联我们的用户账户。当然,如果我们无法获取唯一标识字段,只能获取到头像或者性别这样的一些信息,我们可以再第三方授权获得这些信息后再加一个步骤来补充需要的信息,比如授权后还需要其输入手机号码(好像看见很多小程序都这样干),用这个手机号码来唯一标识他。

实现:

参考gitee官方文档:gitee官网文档:https://gitee.com/api/v5/oauth_doc#/
去第三方应用的创建一个我们网站的接口,相对于去他那登记下,我们这个应用到时候需要它授权哪些东西。
这类平台有微博开放平台,微信开放平台,gitee,前两个审核麻烦,gitee直接就能用。

以gitee为例,首先我们需要去gitee创建一个第三方应用(相对gitee而言我们叫第三方应用),在个人信息的第三方应用,如下所示:

里面的主页地址指的是登录成功后跳转的地址,回调地址是指用户输入账户密码,然后统一授权后会得到一个code,然后这个code信息交给哪个接口来处理。这里地址可以就是本地的地址,像http://localhost:8080/path/to/xx都可以。

首先,用户点击我们登录页面的第三方登录按钮,比如gitee登录,我们给该登录按钮放上gitee的Oauth给的那个链接:https://gitee.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code,里面的client_id和redirect_uri这些就是我们上面再gitee登记应用的信息,然后就会进入gitee的登录界面。
前端代码:

 <a href="https://gitee.com/oauth/authorize?client_id=4d34db3a2769cb4bd9a4a53cec8a387691844bab70f1172e35423ca9a6d0808e&redirect_uri=http://auth.gulimall.com/oauth2.0/gitee/success&response_type=code"><img style="width: 50px;height: 18px;" src="/static/login/JD_img/gittee.jpg"/>   </a>

过程如下:



然后就会带着code到我们在应用中写的后端接口处"http://auth.gulimall.com/oauth2.0/gitee/success".
我们在后端接口中再写代码向第三方服务器发请求,带着code这些参数

https://gitee.com/oauth/token?grant_type=authorization_code&code={code}&client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}

然后得到访问的token。
然后根据token获取信息来创建我们的用户。

下雨了,不写了,回寝室去躺着了。

Oauth2整合gitee相关推荐

  1. Spring Security OAuth2整合JWT

    文章目录 1. Spring Security 与 OAuth2 2. Spring Security OAuth2的配置和使用 ①:引入依赖 ②:配置 spring security ③:配置授权服 ...

  2. JWT实战 Spring Security Oauth2整合JWT 整合SSO单点登录

    文章目录 一.JWT 1.1 什么是JWT 1.2 JWT组成 头部(header) 载荷(payload) 签名(signature) 如何应用 1.3 JJWT 快速开始 创建token toke ...

  3. oauth2整合security

    什么是oauth2 OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源.应用向资源拥有者请求授权,然后取得令牌(token),并用它来访问资源,并且资 ...

  4. oauth2整合security(密码模式)

    oauth2 password 密码模式获取access_token流程 密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名 ...

  5. eclipse 提交git失败_简单10步教你使用eclipse整合gitee码云实现共享开发

    1.在开源中国社区注册账号,并创建对应的项目仓库 创建gitee个人仓库,填写相关的项目信息以及默认属性 填写完成后点击提交会出现以下初始化效果 这是项目的初始仓库,在下载.克隆按钮下有相关的git地 ...

  6. 微信官方你真的懂OAuth2?Spring Security OAuth2整合企业微信扫码登录

    ❝ 企业微信扫码登录DEMO参见文末. 现在很多企业都接入了企业微信,作为私域社群工具,企业微信开放了很多API,可以打通很多自有的应用.既然是应用,那肯定需要做登录.正好企业微信提供了企业微信扫码授 ...

  7. SpringBoot整合Gitee图床

    转载自:Springboot实战:实现本地上传图片到Gitee图床(含完整代码),并在其基础上增加了删除功能~!! 1.查看Gitee官方文档 https://gitee.com/api/v5/swa ...

  8. 权限管理SpringSecurity Oauth2整合JWT实战总结(三)

    1.JWT 1.1.基本的认证机制 1) HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic ...

  9. jenkins整合gitee自动部署SpringBoot项目

    文章目录 前提条件 一.服务器安装jenkins 方法一:简单快捷 第一步:将jenkens.war导入到系统 第二步:放在tomcat的webapp下面 第三步:访问http://ip:8080/j ...

最新文章

  1. PAT(甲级)2018年冬季考试 7-4 Heap Paths(非递归与递归解法)
  2. ListView, GirldList 等setCurrentItem 不立即刷新
  3. 一次Binder通信最大可以传输多大的数据?
  4. 第二章 Linux系统安装 - VMware虚拟机安装、卸载与使用
  5. 目标检测的图像特征提取之(一)Hog特征提取
  6. krita绘图_使用Krita 2.9的Digital Painting提供了缺少的Krita文档
  7. 心血来潮,小试c++11
  8. Android集成第三方微信登录
  9. ubuntu 挂载 windows 分区
  10. 关于数据库的练习题,关系代数
  11. 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知
  12. php linux unoconv,Linux-CentOS 安装 Unoconv
  13. iOS 打开第三方应用
  14. labview 控件变透明
  15. ExtCertPathValidatorException: Could not validate certificate: null
  16. UI设计的15个设计要点,让你的作品更完美
  17. php多次请求只执行最后一次,取消重复请求,只让最后一次请求通过
  18. java 存储表情_java emoji表情存储的解决方法
  19. 易拉罐真的能增强WiFi信号!笔记本手机都适用
  20. 淘宝新店如何推广效果比较好?有哪些渠道?

热门文章

  1. 调试Linux shell脚本
  2. java实验——设计复数类,成员变量包括实部和虚部,成员方法为实现复数相加。
  3. ios保存录制好的视频到相簿的方法
  4. 后端验证 Facebook 登录是否有效
  5. 用【Python】写了一个水果忍者小游戏,玩过之后爱不释手
  6. element-ui生成自定义主题
  7. 你必知的人工智能十大技术及应用,学习AI的你看完会选择往哪个方向发展呢?
  8. C++贪食蛇代码亲测有效
  9. 新型入侵技术:使用WMI编译的“.bmf”文件和CertUtil进行混淆执行
  10. (数据中心)-传统数据中心机房与微模块机房建设的比较