前言
> 此 demo 主要演示 Spring Boot 项目如何使用 **[史上最全的第三方登录工具 - JustAuth](https://github.com/zhangyd-c/JustAuth)** 实现第三方登录,包括QQ登录、GitHub登录、微信登录、谷歌登录、微软登录、小米登录、企业微信登录。 > > 通过 [justauth-spring-boot-starter](https://search.maven.org/artifact/com.xkcoding/justauth-spring-boot-starter) 快速集成,好嗨哟~ > > JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具类库**,它可以让我们脱离繁琐的第三方登录SDK,让登录变得**So easy!** > > 1. **全**:已集成十多家第三方平台(国内外常用的基本都已包含),后续依然还有扩展计划! >2. **简**:API就是奔着最简单去设计的(见后面[`快速开始`](https://github.com/zhangyd-c/JustAuth#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)),尽量让您用起来没有障碍感! > > PS: 本人十分幸运的参与到了这个SDK的开发,主要开发了**QQ登录、微信登录、小米登录、微软登录、谷歌登录**这 **`5`** 个第三方登录,以及一些BUG的修复工作。再次感谢 [@母狼](https://github.com/zhangyd-c) 开源这个又好用又全面的第三方登录SDK。
如果技术选型是
JFinal
的,请查看此
demo
https://github.com/xkcoding/jfinal-justauth-demo
如果技术选型是
ActFramework
的,请查看此
demo
https://github.com/xkcoding/act-justauth-demo
1. 环境准备
1.1. 公网服务器准备
首先准备一台有公网IP的服务器,可以选用阿里云或者腾讯云,如果选用的是阿里云的,可以使用我的 优惠链接 购买。
1.2. 内网穿透frp搭建
1.2.1. frp服务端搭建
服务端搭建在上一步准备的公网服务器上,因为服务器是centos7 x64的系统,因此,这里下载安装包版本为linux_amd64的 frp_0.27.0_linux_amd64.tar.gz 。
-
1
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz
-
1
tar -zxvf frp_0.27.0_linux_amd64.tar.gz
-
1
2
3
4
5
6cd frp_0.27.0_linux_amd64
vim frps.ini
[common]
bind_port = 7100
vhost_http_port = 7200 -
1
2
3
4./frps -c frps.ini
2019/06/15 16:42:02 [I] [service.go:139] frps tcp listen on 0.0.0.0:7100
2019/06/15 16:42:02 [I] [service.go:181] http service listen on 0.0.0.0:7200
2019/06/15 16:42:02 [I] [root.go:204] Start frps success
1.2.2. frp客户端搭建
客户端搭建在本地的Mac上,因此下载安装包版本为darwin_amd64的 frp_0.27.0_darwin_amd64.tar.gz 。
-
1
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_darwin_amd64.tar.gz
-
1
tar -zxvf frp_0.27.0_darwin_amd64.tar.gz
-
1
2
3
4
5
6
7
8
9
10
11cd frp_0.27.0_darwin_amd64
vim frpc.ini
[common]
server_addr = 120.92.169.103
server_port = 7100
[web]
type = http
local_port = 8080
custom_domains = oauth.xkcoding.com -
1
2
3
4./frpc -c frpc.ini
2019/06/15 16:48:52 [I] [service.go:221] login to server success, get run id [8bb83bae5c58afe6], server udp port [0]
2019/06/15 16:48:52 [I] [proxy_manager.go:137] [8bb83bae5c58afe6] proxy added: [web]
2019/06/15 16:48:52 [I] [control.go:144] [web] start proxy success
1.3. 配置域名解析
前往阿里云DNS解析,将域名解析到我们的公网服务器上,比如我的就是将
oauth.xkcoding.com -> 120.92.169.103
1.4. nginx代理
1 |
server { |
1 |
nginx -t |
1 |
nginx -s reload |
1.5. 第三方平台申请
1.5.1. QQ互联平台申请
1.5.2. GitHub平台申请
1.5.3 微信开放平台申请
这里微信开放平台需要用企业的,个人没有资质,所以我在某宝租了一个月的资质,需要的可以 戳我租赁
1.5.4. 谷歌开放平台申请
1.5.5. 微软开放平台申请
1.5.6. 小米开放平台申请
-
前往 https://dev.mi.com/passport/oauth2/applist 添加oauth应用,选择
创建网页应用
-
应用审核通过之后,可以在应用信息页面的
应用详情
查看到 AppKey 和 AppSecret,吐槽下,小米应用的审核速度特别慢,需要耐心等待。。。。
1.5.7. 企业微信平台申请
参考: https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html
2. 主要代码
1
2
3
4 > justauth:
> cache:
> type: default
>
2.1. pom.xml
1 |
<?xml version="1.0" encoding="UTF-8"?> |
2.2. application.yml
1 |
server: |
2.3. OauthController.java
1 |
/** |
2.4. 如果想要自定义 state 缓存
3. 运行方式
打开浏览器,输入 http://oauth.xkcoding.com/demo/oauth ,点击各个登录方式自行测试。
参考
- JustAuth 项目地址: https://github.com/justauth/JustAuth
- justauth-spring-boot-starter 地址: https://github.com/justauth/justauth-spring-boot-starter
- frp内网穿透项目地址: https://github.com/fatedier/frp
- frp内网穿透官方中文文档: https://github.com/fatedier/frp/blob/master/README_zh.md
- Frp实现内网穿透: https://zhuanlan.zhihu.com/p/45445979
- QQ互联文档: http://wiki.connect.qq.com/准备工作_oauth2-0
- 微信开放平台文档: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
- GitHub第三方登录文档: https://developer.github.com/apps/building-oauth-apps/
- 谷歌Oauth2文档: https://developers.google.com/identity/protocols/OpenIDConnect
- 微软Oauth2文档: https://docs.microsoft.com/zh-cn/graph/auth-v2-user
- 小米开放平台账号服务文档: https://dev.mi.com/console/doc/detail?pId=707