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 @@
+JustAuth - Login, so easy! | Product Hunt Embed + + 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 - 修改