diff --git a/docs/Q&A.md b/docs/Q&A.md
index 274e120848c5ecbcf361c5bf0fb6eefcb34f1be5..75316d52f84e5782a5eddb80418cedbbe031864a 100644
--- a/docs/Q&A.md
+++ b/docs/Q&A.md
@@ -150,4 +150,15 @@ AuthRequest authRequest = new AuthQqRequest(AuthConfig.builder()
ps: 我要去祭天了
+## 13. 为什么集成国外平台时,一直提示 `connect time out`?
+所有国外平台都无法直接通过java进行访问API,目前[simple-http](https://github.com/xkcoding/simple-http) Release版本,暂不支持添加代理,所以目前需要手动开启代理。
+
+代理开启的方式:
+```java
+System.setProperty("proxyPort", "10080");
+System.setProperty("proxyHost", "127.0.0.1");
+```
+以上代码可以在声明 `AuthRequest` 时创建,也可以全局执行。
+
+本地如果支持科学上网,就用自己本地的代理端口即可,如果不支持科学上网,可以去网上找一些免费的代理IP进行测试(请自行操作)。
diff --git a/docs/_404.md b/docs/_404.md
index 50f699b452288232f773da8e74212fff52bbf01d..d762b410a0151e948538431b07755fb7bde017e1 100644
--- a/docs/_404.md
+++ b/docs/_404.md
@@ -1,8 +1,8 @@
# :alien: 404:alien:
-**非常感谢您对JustAuth的关注**,您现在查询的内容,作者正在补充中!
+**非常感谢您对JustAuth的关注**,您现在查询的内容,作者**正在补充**中!
-您可能对以下文章感兴趣:
+### 您可能对以下文章感兴趣:
- [OAuth的授权流程是什么样的?](https://docs.justauth.whnb.wang/#/oauth)
- [如何使用JustAuth?](https://docs.justauth.whnb.wang/#/how-to-use)
@@ -25,6 +25,9 @@
- [酷家乐登录](oauth/kujiale.md)
- 更多文章,正在补充中...
+### 其他资料
+
+- [参考文档](references.md)
### 如果还是没有您想要的内容,您可以:
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
index 5b246a1ebac5179e8c90901e95d147549dd9ffa6..67d30741d15228264b4eb40f4991ebb326eacc08 100644
--- a/docs/_sidebar.md
+++ b/docs/_sidebar.md
@@ -13,6 +13,7 @@
- [√ 微博登录](oauth/weibo.md)
- [√ 支付宝登录](oauth/alipay.md)
- [√ 酷家乐登录](oauth/kujiale.md)
+ - [√ 推特登录](oauth/twitter.md)
- [CSDN登录](oauth/csdn.md)
- [微信企业版登录](oauth/wechatEnterprise.md)
- [微信公众平台登录](oauth/wechat_mp.md)
@@ -46,4 +47,5 @@
- [JustAuth与现有用户系统整合](extended/justauth_integrated_with_the_existing_account_system.md)
- [Who is using](users.md)
- [致谢](thx.md)
+- [参考文档](references.md)
- [更新记录](update.md)
diff --git a/docs/explain.md b/docs/explain.md
index 56f95258dc18dfe28eb3376eaa159f05516bf1ef..c0cbb9388a58ad7dddf5d0f3f56270e00e5abd85 100644
--- a/docs/explain.md
+++ b/docs/explain.md
@@ -19,6 +19,13 @@
- `stackOverflowKey` Stack Overflow 登陆时需单独提供的key,由**第三方平台颁发**
- `agentId` 企业微信登陆时需单独提供该值,由**第三方平台颁发**,为授权方的网页应用ID
- `source` JustAuth支持的第三方平台,比如:GITHUB、GITEE等
+- `uuid` 一般为第三方平台的用户ID。以下几个平台需特别注意:
+ - 钉钉、抖音:`uuid` 为用户的 `unionid`
+ - 微信公众平台登录、京东、酷家乐、美团:`uuid` 为用户的 `openId`
+ - 微信开放平台登录、QQ:`uuid` 为用户的 `openId`,平台支持获取`unionid`, `unionid` 在 `AuthToken` 中(如果支持),在登录完成后,可以通过 `response.getData().getToken().getUnionId()` 获取
+ - Google:`uuid` 为用户的 `sub`,`sub`为Google的所有账户体系中用户唯一的身份标识符,详见:[OpenID Connect](https://developers.google.com/identity/protocols/oauth2/openid-connect)
+
+注:建议通过`uuid` + `source`的方式唯一确定一个用户,这样可以解决用户身份归属的问题。因为 单个用户ID 在某一平台中是唯一的,但不能保证在所有平台中都是唯一的。
## 参考资料
diff --git a/docs/oauth/twitter.md b/docs/oauth/twitter.md
new file mode 100644
index 0000000000000000000000000000000000000000..31a2d6e86ef54a33f4792984d37e534ba4d95d90
--- /dev/null
+++ b/docs/oauth/twitter.md
@@ -0,0 +1,104 @@
+## 1. 申请应用
+
+参考文章:[twitter三方登录的实现](https://my.oschina.net/u/3361217/blog/1438877),只需关注创建应用部分即可。
+
+copy以下三个信息:`App ID`、`App Key`和`网站回调域`。
+
+> 友情提示:twitter现不支持个人用户创建应用
+
+## 2. 集成JustAuth
+
+
+### 2.1 引入依赖
+
+```xml
+
+ me.zhyd.oauth
+ JustAuth
+ ${latest.version}
+
+```
+
+`${latest.version}`表示当前最新的版本,可以在[这儿](https://github.com/justauth/JustAuth/releases)获取最新的版本信息。
+
+### 2.2 创建Request
+
+```java
+// 国外平台 目前必须要手动配置代理
+System.setProperty("proxyPort", "10080");
+System.setProperty("proxyHost", "127.0.0.1");
+AuthRequest authRequest = new AuthTwitterRequest(AuthConfig.builder()
+ .clientId("App ID")
+ .clientSecret("App Key")
+ .redirectUri("网站回调域")
+ .build());
+```
+
+> 特别注意:所有国外平台都无法直接通过java进行访问API,目前[simple-http](https://github.com/xkcoding/simple-http) Release版本,暂不支持添加代理,所以目前需要手动开启代理。
+
+代理开启的方式:
+```java
+System.setProperty("proxyPort", "10080");
+System.setProperty("proxyHost", "127.0.0.1");
+```
+以上代码可以在声明 `AuthRequest` 时创建,也可以全局执行。
+
+本地如果支持科学上网,就用自己本地的代理端口即可,如果不支持科学上网,可以去网上找一些免费的代理IP进行测试(请自行操作)。
+
+### 2.3 生成授权地址
+
+我们可以直接使用以下方式生成第三方平台的授权链接:
+```java
+String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
+```
+这个链接我们可以直接后台重定向跳转,也可以返回到前端后,前端控制跳转。前端控制的好处就是,可以将第三方的授权页嵌入到iframe中,适配网站设计。
+
+
+### 2.4 以上完整代码如下
+
+```java
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.request.AuthTwitterRequest;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.request.AuthRequest;
+import me.zhyd.oauth.utils.AuthStateUtils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+
+@RestController
+@RequestMapping("/oauth")
+public class RestAuthController {
+
+ @RequestMapping("/render")
+ public void renderAuth(HttpServletResponse response) throws IOException {
+ AuthRequest authRequest = getAuthRequest();
+ response.sendRedirect(authRequest.authorize(AuthStateUtils.createState()));
+ }
+
+ @RequestMapping("/callback")
+ public Object login(AuthCallback callback) {
+ AuthRequest authRequest = getAuthRequest();
+ return authRequest.login(callback);
+ }
+
+ private AuthRequest getAuthRequest() {
+ // 国外平台 目前必须要手动配置代理
+ System.setProperty("proxyPort", "10080");
+ System.setProperty("proxyHost", "127.0.0.1");
+ return new AuthTwitterRequest(AuthConfig.builder()
+ .clientId("App ID")
+ .clientSecret("App Key")
+ .redirectUri("网站回调域")
+ .build());
+ }
+}
+```
+
+## 3. 授权结果
+
+暂无
\ No newline at end of file
diff --git a/docs/references.md b/docs/references.md
new file mode 100644
index 0000000000000000000000000000000000000000..79583b73378ba6e30e2007857e48f22d396586b7
--- /dev/null
+++ b/docs/references.md
@@ -0,0 +1,43 @@
+## OAuth 文档
+
+关于OAuth2相关的内容、原理可以自行参阅以下资料:
+
+- [The OAuth 2.0 Authorization Framework](https://tools.ietf.org/html/rfc6749)
+- [OAuth 2.0](https://oauth.net/2/)
+
+## 第三方平台的API文档
+
+- Gitee
+- Github
+- 新浪微博
+- 钉钉
+- 百度
+- coding
+- 腾讯云
+- 开源中国
+- 支付宝
+- QQ
+- 微信开放平台
+- 微信公众平台
+- 企业微信
+- 淘宝
+- Google
+- Facebook
+- 抖音
+- 领英
+- 微软
+- 小米
+- 头条
+- Teambition
+- 人人
+- Pinterest
+- StackOverflow
+- 华为
+- 酷家乐
+- Gitlab
+- 美团
+- 饿了么
+- 推特
+ - 用户信息
+ - 响应码
+ - Callback Urls规则
diff --git a/docs/thx.md b/docs/thx.md
index 777b0372654e1367f12c1d657f0aa14f530072e7..01e58b6dc628f68edb89330519b856507687fd95 100644
--- a/docs/thx.md
+++ b/docs/thx.md
@@ -13,3 +13,6 @@
+
+
+
diff --git a/docs/update.md b/docs/update.md
index 795864e030b6b348aa42538d1136a6c076caed2b..a04e789d95a22dd07b6e0683e38fdc74250e4b9d 100644
--- a/docs/update.md
+++ b/docs/update.md
@@ -1,3 +1,26 @@
+## 1.15.3-alpha
+### 2020/05/13
+- 修复
+ - 解决 Twitter 授权失败的BUG
+- 文档
+ - 完善 [https://docs.justauth.whnb.wang](https://docs.justauth.whnb.wang/) 的404引导页内容
+ - 增加名词解释: `uuid`
+ - 补充 [Q&A](Q&A.md)
+ - 新增 [参考文档](references.md),包含 OAuth 授权和第三方平台的API文档等内容
+ - 新增 [推特登录](oauth/twitter.md) 的说明文档
+
+> 特别注意:所有国外平台都无法直接通过java进行访问API,目前[simple-http](https://github.com/xkcoding/simple-http) Release版本,暂不支持添加代理,所以目前需要手动开启代理。
+
+代理开启的方式:
+```java
+System.setProperty("proxyPort", "10080");
+System.setProperty("proxyHost", "127.0.0.1");
+```
+以上代码可以在声明 `AuthRequest` 时创建,也可以全局执行。
+
+本地如果支持科学上网,就用自己本地的代理端口即可,如果不支持科学上网,可以去网上找一些免费的代理IP进行测试(请自行操作)。
+
+
## 1.15.2-alpha
### 2020/05/10
- 修改