From 0b9cb95103fe34f4adb6a46629bc0b1e28e6bc56 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Sat, 3 Aug 2019 14:27:54 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20=E5=B8=AE=E5=8A=A9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 125 +++++++++++++++++++++++++++++++++++++++++ docs/_media/cover.png | Bin 0 -> 19434 bytes docs/_media/logo.png | Bin 0 -> 6186 bytes docs/_media/logo_i.png | Bin 0 -> 1483 bytes docs/favicon.ico | Bin 0 -> 1024 bytes docs/index.html | 55 ++++++++++++++++++ 6 files changed, 180 insertions(+) create mode 100644 docs/README.md create mode 100644 docs/_media/cover.png create mode 100644 docs/_media/logo.png create mode 100644 docs/_media/logo_i.png create mode 100644 docs/favicon.ico create mode 100644 docs/index.html diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..854e6cb --- /dev/null +++ b/docs/README.md @@ -0,0 +1,125 @@ +

+ +

+

+ Login, so easy! +

+

+ 史上最全的整合第三方登录的开源库 +

+

+ + + + + + + + + + + + + + + + + star + + + github star + +

+

+ 开源地址: Gitee | Github +

+

+ QQ群:230017570 +

+

+ 文档更新日期: {docsify-updated} +

+ +## 简介 + +JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具类库**,它可以让我们脱离繁琐的第三方登录SDK,让登录变得**So easy!** + +## 特点 + +废话不多说,就俩字: + +1. **全**:已集成十多家第三方平台(国内外常用的基本都已包含),后续依然还有扩展计划! +2. **简**:API就是奔着最简单去设计的,尽量让您用起来没有障碍感! + +## 已集成的平台 + +| :computer: 平台 | :coffee: API类 | :page_facing_up: SDK | +|:------:|:-------:|:-------:| +| | [AuthGiteeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java) | 参考文档 | +| | [AuthGithubRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java) | 参考文档 | +| | [AuthWeiboRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java) | 参考文档 | +| | [AuthDingTalkRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java) | 参考文档 | +| | [AuthBaiduRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java) | 参考文档 | +| | [AuthCodingRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java) | 参考文档 | +| | [AuthTencentCloudRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java) | 参考文档 | +| | [AuthOschinaRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java) | 参考文档 | +| | [AuthAlipayRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java) | 参考文档 | +| | [AuthQqRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java) | 参考文档 | +| | [AuthWeChatRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java) | 参考文档 | +| | [AuthTaobaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java) | 参考文档 | +| | [AuthGoogleRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java) | 参考文档 | +| | [AuthFacebookRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java) | 参考文档 | +| | [AuthDouyinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java) | 参考文档 | +| | [AuthLinkedinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java) | 参考文档 | +| | [AuthMicrosoftRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java) | 参考文档 | +| | [AuthMiRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java) | 参考文档 | +| | [AuthToutiaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java) | 参考文档 | +| | [AuthTeambitionRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java) | 参考文档 | +| | [AuthRenrenRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java) | 参考文档 | +| | [AuthPinterestRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java) | 参考文档 | +| | [AuthStackOverflowRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java) | 参考文档 | +| | [AuthCsdnRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java) | 无 | + + +## 快速开始 + +- 引入依赖 +```xml + + me.zhyd.oauth + JustAuth + 1.9.5 + +``` +- 调用api +```java +// 创建授权request +AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder() + .clientId("clientId") + .clientSecret("clientSecret") + .redirectUri("redirectUri") + .build()); +// 生成授权页面 +authRequest.authorize(); +// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数 +// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state +authRequest.login(callback); +``` + +## 贡献代码 + +1. fork本项目到自己的repo +2. 把fork过去的项目也就是你仓库中的项目clone到你的本地 +3. 修改代码 +4. commit后push到自己的库 +5. 发起PR(pull request) 请求,提交到`dev`分支 +6. 等待作者合并 + +_注:JustAuth只接受集成oauth2.0的平台_ + +## 捐赠 + +| 支付宝 | 微信 | +| :------------: | :------------: | +| | | + diff --git a/docs/_media/cover.png b/docs/_media/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..89f5847921ba48e6e2189771196d468854dd1929 GIT binary patch literal 19434 zcmdSAg*DWOO&9Q9@c^fQmGNfYgAI!ss3)B{8~2 zcc;L)d7ke%uirWU!FjzD#=ZN#uIp3pPu^i~-zZU$Gm#Sz5Kz7P=Y<9V!A&&qxr2-Z z`1z#A)C%}@!$m_$o&ep;ybAn5Wcgh6IRQaQG{s+IV&LyvPXFk-5D-weT>rn(?wD&v zK%ngR>cw*{PlL_xqzPO~ZfL5P>;X5Df7li`ITP@x2vWlv7arf>WZG!QRpW5p5wQ=yX&c9ui7wX)fh{Z^^}Xqp@^U{v!VO0H9;PO)q9mdE7gx(Zsg59v ziZxd^Hykb}Ki?N}o9OxVzo47!Sm=MB9}}6tiT}GO|NrBQl&2%A(5CY~!@i7jQIEDP za_d$Mc>p_E06W88?0N-p!{OjVo@&1c2He!$52fF`A8-gyUH z^b(NpX-pz|UQC*U@G;5Nb≻vdmL^WO`Sl9%vc^B9~o^{roM&u)6ZDwnN1;<5pQ!E90IJYT-$dhLhKtBmX zfQUF~=+M*3)J7?i3ny6!`v7*Q7Hc?t1mZjB|G7cd_ms<-06$V!`a6nU$A1tbtML%) zCfbV0esC>6obW-^m%w-`9|>kahO?o-_u5n7cAzA`}6Q!~pT~$n^r?rdNXK z0Cvnm+qkduY-!$cY7H-1|27eCE2jE6()RUNfQ+VxSKc^Y;M>B(p3>}mb|+5kFcrXs zugH9MGTwBOr}Sq77a|BEfIjyB;~O-_ODdPQB_5z@=h%#D#}!-{{cQN)F{m=`sC1 zLMR8oSZf}5D(3#|o4+~_XMlEW%2nq(rG z)&ahQ{>RqRK^#uWK*{A5a-GsrZulQ+9rUo6AV}!}nM0MgHDv73@-=S(>H)*ykb3&` z>4KYZd@H7RXR8eNnJ~^)|FLZ~xx{W_e&uH$XI?Za-yan4$(81yC9{SJ&2u6aoD7813AD9~$l!&T?y>m$5Uy2>thV zhMq_E+%gt(rEm7znqvq|0lp`AdYv>L+h87vIjha zebiiYoqvq9?4SSRNmmb#f1fNx*s~?ElRkl7O!(B`?^=4|pFlchGzY$j*+nSR64j*a zz99VnJSr?I`t^F#QpCk@nd$<27Pt2|XxFtZ{*{4JMXR+xBoC00b!vKFdS(9QKN$fU z8dNpb;3wy`X$E}=hS@p3qSD}g-_qHQ|6?$Z150(zK!@A-Dq4X@S>7vUchtv2|6}GW zz`~X+jEp|kx|gCfBG=bKo;!ck7(RB)k5cvyOW(EL^MJawp04BX5;sv(z_uTr8)*Me z*nkozB#(?}?~Qk&UW=gRYAZvSe`vYku)Ubpc$Xn6>ARC)M8>c@5cKdIO49(*@UmxH}ZGesZ*-(9X|6`^AI)Gp5{{8z4ZkZXch0(`$ z^NE3Hk--!AyENH8pDo(}`?yv_cTaZ@wy|ZcYryyq6%xMp_P*HzHhIW|P}IpbYv!~biu4@VmuMPLv#39&gX_KI3Xa_v@kQUoNf z;;Ww;G=UF7Hd%{b&hNO)<^;~hfcpk0nxu-F8YwL;ZPVze&d-5?ft9pTV;g5@!Lw6; zLelveUM_L!wIp?D79)-#)sc&o3+i*egu=9rS#PmDxH8jluF+BM)eDAOC6(U z*EHK%!i|yYq@kaC_HQxpbH8CZJs=Q}mS*0Vs)=6|Ifcu!tn~4!@W__RgBAGub%%zA zUSJEk8E`)xcvV$T6FGEdq+d{zqu%46kUC28gDVTy*}LBk1AdJ@UWd7uv$YZWeDmvIADLCpfLpdb3%DYSTr;*zQ0sXN>N-C@w+YDcIBXMH3aNRPsfIux+h#Idaf$-S2RIOZX9G zBw8vc`%6w7Ko2tsRC9g{=PoSX?m@JI65r54d)8T#rc_TuhuXm|M6@ky4blESHT1rr z)>N-h+>$-Kq^c$Duk%w~*2-f0?cwf;fK_ITdtrb;$7GW~A$qcFk&vZ~44StBiyRC( zW~Ehk@M|P%Aw`*%_k@_+Cx6B8C_y`NLAT!E!wWLhoS1NG@Dd4LD2)JGI0Xw`O!BkR z^VkuK-#hdH)tzsMG_imueZdd@1+_IzSA2M(imk0}r{^A>yX!JewEYl z0QDXw&Yv4#M+J>T8Te@&Jt3EEw1x|a^*{2A%r}E8FJ>Zo&SnqNB0Q(p64utm9B8UT zmJJSrC;(grJ;8_b;e0YWu){e#>vr-pb4fTJ?69oTv{A(`^9(%wc9^mjo~Cd9^fBdF zN(QiQd|V0QVj=b`;%RI&)=lxk2+pmlIm0kf-2-nH4qn`E?ePbs6#fkX!rM^G2H99! zbC~X^caXXK_5rTMUk*Ik!=f`qBHtVC&j&J~q@f%!8ux%8rBsFxk>?9+u zTuQ=@QO#Cor_ZujqPeb8X*9l%{|x`vde=0C@$ZBO-*FeX8U--GYK)#dSqnj<8Zbsa z@C-?Y$y`A<;kpI}+uJToxJAINDk33NIf(D}(1`J^fmwaabK7_6Vkx!KI#Wh```iGN z1<+^rdNA`Xk5F5jWce%!JU1R*?jhJo;hlh%gTj{VuN-UDM= zLj6|EIHAfjWrL{bO5pq7maTqO`R?HtKCfM5e z)$ift&Y44~5?_j6r5wwDt~)Km3@(BHttTTRv#XxRfgNVmkq@s9%O|I(NY{<ȳ|@KzKPrd^B83~pbrZ7r{kgmh)E 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%0DPHQ`L5R413-1~1LiH=vUu zQkzb3w{M{cADI}0&vw=NJm74BoL-rw+z+TWk>KJ#w03B&B?c1>kU@q zMz?l)!*~iUg^M)>I`3vZ7za8GT#@kT=W zT4v9=TQR)jCdZpa+y&TQe}vE}MLFr5j4+uYNrred*$D&ARU z@P-e{B3@;nL~H%Qx0B6BC)D_=8lSqF=&sTo05@X*0n*^lLSnoCX8RhLGvLkvE%d!! zIw9sYRaABJ5Mi>@R#(u*cRr&AKkk?Mu{8){E1_P}#1}F$?t+T3Ch$CPA^N%|Hm?!U zPJ#S@SGaPj@hLk{^VoW@J~EJ{{BB-j-*S7Fh%pnr$B%BfkA=QEw&yj(hr0`=?_gs; z%(nZUi#9R80D`lz%g-vrwFzYYV{ur*v9#4aFK zyF{X0T?mi#?T(krEIP+f|<>D{sE}J}W#f`?My=KQ&w(=EZ;$11#{>q8+@!b#nwL zosa`%2b|Nd*gS4xHa~T@b#mK~B`Ug^91|g+!VD|8`}|jMl-))~+o3>W5%#dW-3#Y% zXuk~Bm-Xb>rZ#E84om}sY zii~V~xJ+8f7|K0>xrxpywNvqW;(_n_RYr3F0CHOv9h>*h7c7}*-(6QzxS(9hM20-C zwtPagOR6=esgOE=RUUp^Sg0aUugdAi#;y;Wb51B5-`L_Qp@C2|etKJyn5z*9!J%kH z<660w^KRNQg?4}o(7v9Is&MDsRhGmD(dsZqsj2BCw9ffglqQV6?(e7LhWe%o9^p65JEb{_MmE+h|+_ z5A{G{eoiB6n4!HJ`8VFSqw=rZmU}T~2IGl1so?74-9GxhEA~2@^>`Um|g*iCHY=LbNZmPuNn|5seY0j?M(cPyy4p$STC58((}#?7g1PoW|DIK2a4^K z_3~>lx!Q-C@kmyW21YME2GX8EOYTmLGw-w^cl;pH$H+YDj*zPN7dGqC-@;ok&CGMp zNg1sZBv7eU-`ZV?qezAH3^!fStaE2c$&o^-R_u-i)z!|4ay4UPAAwE5QV~;a(romS z8_3w_SGmbz{Eq~;wO_7&sMK!%RfWG;-Y+Dzt4{g)6xdj^jRDpxb2;ezy|DZ+X{wE! z5U6dMO-%}lM2;r-bHkwM915q}s7iB8RSsq}AvC{hU2T3WL~!79Tic-zu-m9hntizP zQf9pevY=aw_xGPfwLRH?da@m7Hl{I`Q?a$0;_mKeLQ{`{MyaUJ87d_bf}|95s&IE| z#toztJsxx}(W48F{H4Z`ocwq+VV*x(JSxzXVi?WqAx49ap0ZO#%%-vigbqmSP6+=q zt>tz&ynZn@F-tLIlBN5=fzZAy~mxU__;WRZyw z*=HAiP=r}@RkkoD>FT#}IR|*6?k3n#243)88Z3wLA@$N69+pX##DDDuZ#^}t++N%! zY?swi8fi=4p48|$yD?p{b0U{006rZfmR?_FO>9vZxvKg=&lnMwIy$$NxyA#uF}TcT zRE>ntS@LwWfy@R?ru}`@vfRG(x{rAGh0==aEDW3+Up(t{%_3r82L)1PcEpM-@S|7M zw8l^Y)|FII@hCm04pkGK=#r?Z7`pa1#7#j&J*%;fc%vaGBqW(WQSO2AIw+mjb9$q` ze@Kk=uU3;$+L?}z)1`~_M1!w{unu}IRgJoCZebB<##{�XER7jDLNL>kbJ)Gkc_$ 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 TrUC)(=bEy4BW{D-Z)e(n$LlxK literal 0 HcmV?d00001 diff --git a/docs/_media/logo.png b/docs/_media/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2d326a4504b357f4778941d2183561df58e5f167 GIT binary patch literal 6186 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 + + + + JustAuth - 史上最全的整合第三方登录的开源库 + + + + + + + + + + + + + + + + +
Please wait...
+ + + + -- GitLab