Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
justauth
JustAuth
提交
f3619f48
J
JustAuth
项目概览
justauth
/
JustAuth
1 年多 前同步成功
通知
391
Star
15212
Fork
2708
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JustAuth
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f3619f48
编写于
5月 28, 2019
作者:
智布道
👁
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🔖
增加小米账号和微软的授权登陆。发布1.5.0版本
上级
e92f8961
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
84 addition
and
80 deletion
+84
-80
README.md
README.md
+10
-2
pom.xml
pom.xml
+5
-13
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
+65
-65
update.md
update.md
+4
-0
未找到文件。
README.md
浏览文件 @
f3619f48
...
...
@@ -35,6 +35,8 @@
<td
align=
"center"
width=
"200"
><a
href=
"#授权facebook"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/facebook.png"
width=
"20"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权抖音"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/douyin.png"
width=
"20"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权领英"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/linkedin.png"
width=
"20"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权微软"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/microsoft.png"
width=
"20"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权小米"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/mi.png"
width=
"20"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权csdn"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"20"
></a></td>
</tr>
</table>
...
...
@@ -61,7 +63,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具
<dependency>
<groupId>
me.zhyd.oauth
</groupId>
<artifactId>
JustAuth
</artifactId>
<version>
1.
4
.0
</version>
<version>
1.
5
.0
</version>
</dependency>
```
-
调用api
...
...
@@ -104,8 +106,9 @@ authRequest.login("code");
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/facebook.png"
width=
"20"
>
|
[
AuthFacebookRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java
)
|
<a
href=
"https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/douyin.png"
width=
"20"
>
|
[
AuthDouyinRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
)
|
<a
href=
"https://www.douyin.com/platform/doc"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/linkedin.png"
width=
"20"
>
|
[
AuthLinkedinRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java
)
|
<a
href=
"https://docs.microsoft.com/zh-cn/linkedin/shared/authentication/authorization-code-flow?context=linkedin/context"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/microsoft.png"
width=
"20"
>
|
[
AuthMicrosoftRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java
)
|
<a
href=
"https://docs.microsoft.com/zh-cn/graph/auth/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/mi.png"
width=
"20"
>
|
[
AuthMiRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java
)
|
<a
href=
"https://dev.mi.com/console/doc/detail?pId=711"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"20"
>
|
[
AuthCsdnRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
)
| 无 |
| |
[
AuthMicrosoftRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java
)
|
<a
href=
"https://docs.microsoft.com/zh-cn/graph/auth/"
target=
"_blank"
>
参考文档
</a>
|
_请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用。so, 本项目中的CSDN登录只能针对少部分用户使用了_
...
...
@@ -197,6 +200,11 @@ _请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经
![
授权领英登录
](
https://images.gitee.com/uploads/images/2019/0527/152207_a6342979_784199.png
"授权领英登录"
)
#### 授权微软
#### 授权小米
#### 授权csdn
_请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用。so, 本项目中的CSDN登录只能针对少部分用户使用了_
...
...
pom.xml
浏览文件 @
f3619f48
...
...
@@ -6,11 +6,14 @@
<groupId>
me.zhyd.oauth
</groupId>
<artifactId>
JustAuth
</artifactId>
<version>
1.
4
.0
</version>
<version>
1.
5
.0
</version>
<name>
JustAuth
</name>
<url>
https://gitee.com/yadong.zhang/JustAuth
</url>
<description>
史上最全的整合第三方登录的工具, Just Auth
</description>
<description>
史上最全的整合第三方登录的工具,目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米和微软等第三方平台的授权登录。
Login, so easy!
</description>
<licenses>
<license>
...
...
@@ -77,12 +80,6 @@
<artifactId>
fastjson
</artifactId>
<version>
${fastjson-version}
</version>
</dependency>
<!--<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>${google-api-version}</version>
</dependency>-->
<dependency>
<groupId>
com.alipay.sdk
</groupId>
<artifactId>
alipay-sdk-java
</artifactId>
...
...
@@ -117,12 +114,10 @@
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-javadoc-plugin
</artifactId>
</plugin>
<!-- GPG -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-gpg-plugin
</artifactId>
...
...
@@ -134,7 +129,6 @@
<id>
release
</id>
<build>
<plugins>
<!-- Source -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-source-plugin
</artifactId>
...
...
@@ -149,7 +143,6 @@
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-javadoc-plugin
</artifactId>
...
...
@@ -162,7 +155,6 @@
</execution>
</executions>
</plugin>
<!-- GPG -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-gpg-plugin
</artifactId>
...
...
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
浏览文件 @
f3619f48
...
...
@@ -77,12 +77,27 @@ public class UrlBuilder {
private
static
final
String
DOUYIN_USER_INFO_PATTERN
=
"{0}?access_token={1}&open_id={2}"
;
private
static
final
String
DOUYIN_REFRESH_TOKEN_PATTERN
=
"{0}?client_key={1}&refresh_token={2}&grant_type=refresh_token"
;
private
static
final
String
LINKEDIN_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&redirect_uri={2}&state={3}&response_type=code&scope=r_liteprofile%20r_emailaddress%20w_member_social"
;
private
static
final
String
LINKEDIN_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&code={3}&redirect_uri={4}&grant_type=authorization_code"
;
private
static
final
String
LINKEDIN_USER_INFO_PATTERN
=
"{0}?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))"
;
private
static
final
String
LINKEDIN_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&refresh_token={3}&grant_type=refresh_token"
;
private
static
final
String
MICROSOFT_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&response_type=code&redirect_uri={2}&response_mode=query&scope=offline_access%20user.read%20mail.read&state={3}"
;
private
static
final
String
MICROSOFT_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&scope=user.read%20mail.read&redirect_uri={3}&code={4}&grant_type=authorization_code"
;
private
static
final
String
MICROSOFT_USER_INFO_PATTERN
=
"{0}"
;
private
static
final
String
MICROSOFT_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&scope=user.read%20mail.read&redirect_uri={3}&refresh_token={4}&grant_type=refresh_token"
;
private
static
final
String
MI_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&redirect_uri={2}&response_type=code&scope=user/profile%20user/openIdV2%20user/phoneAndEmail&state={3}&skip_confirm=false"
;
private
static
final
String
MI_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&redirect_uri={3}&code={4}&grant_type=authorization_code"
;
private
static
final
String
MI_USER_INFO_PATTERN
=
"{0}?clientId={1}&token={2}"
;
private
static
final
String
MI_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&redirect_uri={3}&refresh_token={4}&grant_type=refresh_token"
;
/**
* 获取githubtoken的接口地址
*
* @param clientId github应用的Client ID
* @param clientSecret github应用的Client Secret
* @param code github授权前的code,用来换token
* @param clientId github
应用的Client ID
* @param clientSecret github
应用的Client Secret
* @param code github
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -114,9 +129,9 @@ public class UrlBuilder {
/**
* 获取weibo token的接口地址
*
* @param clientId weibo应用的App Key
* @param clientSecret weibo应用的App Secret
* @param code weibo授权前的code,用来换token
* @param clientId weibo
应用的App Key
* @param clientSecret weibo
应用的App Secret
* @param code weibo
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -148,9 +163,9 @@ public class UrlBuilder {
/**
* 获取gitee token的接口地址
*
* @param clientId gitee应用的Client ID
* @param clientSecret gitee应用的Client Secret
* @param code gitee授权前的code,用来换token
* @param clientId gitee
应用的Client ID
* @param clientSecret gitee
应用的Client Secret
* @param code gitee
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -205,9 +220,9 @@ public class UrlBuilder {
/**
* 获取baidu token的接口地址
*
* @param clientId baidu应用的API Key
* @param clientSecret baidu应用的Secret Key
* @param code baidu授权前的code,用来换token
* @param clientId baidu
应用的API Key
* @param clientSecret baidu
应用的Secret Key
* @param code baidu
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -239,7 +254,7 @@ public class UrlBuilder {
/**
* 获取收回baidu授权的地址
*
* @param accessToken baidu授权登录后的token
* @param accessToken baidu
授权登录后的token
* @return json
*/
public
static
String
getBaiduRevokeUrl
(
String
accessToken
)
{
...
...
@@ -249,9 +264,9 @@ public class UrlBuilder {
/**
* 获取csdn token的接口地址
*
* @param clientId csdn应用的App Key
* @param clientSecret csdn应用的App Secret
* @param code csdn授权前的code,用来换token
* @param clientId csdn
应用的App Key
* @param clientSecret csdn
应用的App Secret
* @param code csdn
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -283,9 +298,9 @@ public class UrlBuilder {
/**
* 获取coding token的接口地址
*
* @param clientId coding应用的App Key
* @param clientSecret coding应用的App Secret
* @param code coding授权前的code,用来换token
* @param clientId coding
应用的App Key
* @param clientSecret coding
应用的App Secret
* @param code coding
授权前的code,用来换token
* @return full url
*/
public
static
String
getCodingAccessTokenUrl
(
String
clientId
,
String
clientSecret
,
String
code
)
{
...
...
@@ -316,9 +331,9 @@ public class UrlBuilder {
/**
* 获取腾讯云开发者平台 token的接口地址
*
* @param clientId coding应用的App Key
* @param clientSecret coding应用的App Secret
* @param code coding授权前的code,用来换token
* @param clientId coding
应用的App Key
* @param clientSecret coding
应用的App Secret
* @param code coding
授权前的code,用来换token
* @return full url
*/
public
static
String
getTencentCloudAccessTokenUrl
(
String
clientId
,
String
clientSecret
,
String
code
)
{
...
...
@@ -349,9 +364,9 @@ public class UrlBuilder {
/**
* 获取oschina token的接口地址
*
* @param clientId oschina应用的App Key
* @param clientSecret oschina应用的App Secret
* @param code oschina授权前的code,用来换token
* @param clientId oschina
应用的App Key
* @param clientSecret oschina
应用的App Secret
* @param code oschina
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -383,9 +398,9 @@ public class UrlBuilder {
/**
* 获取qq token的接口地址
*
* @param clientId qq应用的App Key
* @param clientSecret qq应用的App Secret
* @param code qq授权前的code,用来换token
* @param clientId qq
应用的App Key
* @param clientSecret qq
应用的App Secret
* @param code qq
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -440,8 +455,8 @@ public class UrlBuilder {
/**
* 获取微信 授权地址
*
* @param clientId 微信应用的appid
* @param redirectUrl 微信应用授权成功后的回调地址
* @param clientId 微信
应用的appid
* @param redirectUrl 微信
应用授权成功后的回调地址
* @return full url
*/
public
static
String
getWeChatAuthorizeUrl
(
String
clientId
,
String
redirectUrl
)
{
...
...
@@ -451,9 +466,9 @@ public class UrlBuilder {
/**
* 获取微信 token的接口地址
*
* @param clientId 微信应用的appid
* @param clientSecret 微信应用的secret
* @param code 微信授权前的code,用来换token
* @param clientId 微信
应用的appid
* @param clientSecret 微信
应用的secret
* @param code 微信
授权前的code,用来换token
* @return full url
*/
public
static
String
getWeChatAccessTokenUrl
(
String
clientId
,
String
clientSecret
,
String
code
)
{
...
...
@@ -463,8 +478,8 @@ public class UrlBuilder {
/**
* 获取微信 用户详情的接口地址
*
* @param token 微信应用返回的 access token
* @param openId 微信应用返回的openId
* @param token 微信
应用返回的 access token
* @param openId 微信
应用返回的openId
* @return full url
*/
public
static
String
getWeChatUserInfoUrl
(
String
token
,
String
openId
)
{
...
...
@@ -474,8 +489,8 @@ public class UrlBuilder {
/**
* 获取微信 刷新令牌 地址
*
* @param clientId 微信应用的appid
* @param refreshToken 微信应用返回的刷新token
* @param clientId 微信
应用的appid
* @param refreshToken 微信
应用返回的刷新token
* @return full url
*/
public
static
String
getWeChatRefreshUrl
(
String
clientId
,
String
refreshToken
)
{
...
...
@@ -485,9 +500,9 @@ public class UrlBuilder {
/**
* 获取Taobao token的接口地址: 淘宝的授权登录,在这一步就会返回用户信息
*
* @param clientId taobao应用的App Key
* @param clientSecret taobao应用的App Secret
* @param code taobao授权前的code,用来换token
* @param clientId taobao
应用的App Key
* @param clientSecret taobao
应用的App Secret
* @param code taobao
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -520,9 +535,9 @@ public class UrlBuilder {
/**
* 获取Google token的接口地址
*
* @param clientId google应用的Client ID
* @param clientSecret google应用的Client Secret
* @param code google授权前的code,用来换token
* @param clientId google
应用的Client ID
* @param clientSecret google
应用的Client Secret
* @param code google
授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
...
...
@@ -612,19 +627,14 @@ public class UrlBuilder {
/**
* 获取Douyin 刷新令牌 地址
*
* @param clientId Douyin应用的client_key
* @param refreshToken Douyin应用返回的refresh_token
* @param clientId Douyin
应用的client_key
* @param refreshToken Douyin
应用返回的refresh_token
* @return full url
*/
public
static
String
getDouyinRefreshUrl
(
String
clientId
,
String
refreshToken
)
{
return
MessageFormat
.
format
(
DOUYIN_REFRESH_TOKEN_PATTERN
,
ApiUrl
.
DOUYIN
.
refresh
(),
clientId
,
refreshToken
);
}
private
static
final
String
LINKEDIN_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&redirect_uri={2}&state={3}&response_type=code&scope=r_liteprofile%20r_emailaddress%20w_member_social"
;
private
static
final
String
LINKEDIN_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&code={3}&redirect_uri={4}&grant_type=authorization_code"
;
private
static
final
String
LINKEDIN_USER_INFO_PATTERN
=
"{0}?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))"
;
private
static
final
String
LINKEDIN_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&refresh_token={3}&grant_type=refresh_token"
;
/**
* 获取Linkedin授权地址
*
...
...
@@ -643,7 +653,7 @@ public class UrlBuilder {
* @param clientId Linkedin 应用的Client ID
* @param clientSecret Linkedin 应用的Client Secret
* @param code Linkedin 授权前的code,用来换token
* @param redirectUrl
google
应用授权成功后的回调地址
* @param redirectUrl
Linkedin
应用授权成功后的回调地址
* @return full url
*/
public
static
String
getLinkedinAccessTokenUrl
(
String
clientId
,
String
clientSecret
,
String
code
,
String
redirectUrl
)
{
...
...
@@ -662,20 +672,15 @@ public class UrlBuilder {
/**
* 获取Linkedin 刷新令牌 地址
*
* @param clientId Linkedin应用的client_key
* @param clientId Linkedin
应用的client_key
* @param clientSecret Linkedin 应用的Client Secret
* @param refreshToken Linkedin应用返回的refresh_token
* @param refreshToken Linkedin
应用返回的refresh_token
* @return full url
*/
public
static
String
getLinkedinRefreshUrl
(
String
clientId
,
String
clientSecret
,
String
refreshToken
)
{
return
MessageFormat
.
format
(
LINKEDIN_REFRESH_TOKEN_PATTERN
,
ApiUrl
.
LINKEDIN
.
refresh
(),
clientId
,
clientSecret
,
refreshToken
);
}
private
static
final
String
MICROSOFT_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&response_type=code&redirect_uri={2}&response_mode=query&scope=offline_access%20user.read%20mail.read&state={3}"
;
private
static
final
String
MICROSOFT_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&scope=user.read%20mail.read&redirect_uri={3}&code={4}&grant_type=authorization_code"
;
private
static
final
String
MICROSOFT_USER_INFO_PATTERN
=
"{0}"
;
private
static
final
String
MICROSOFT_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&scope=user.read%20mail.read&redirect_uri={3}&refresh_token={4}&grant_type=refresh_token"
;
/**
* 获取微软授权地址
*
...
...
@@ -713,21 +718,16 @@ public class UrlBuilder {
/**
* 获取微软 刷新令牌 地址
*
* @param clientId 微软应用的client_key
* @param clientId 微软
应用的client_key
* @param clientSecret 微软 应用的Client Secret
* @param redirectUrl 微软 应用授权成功后的回调地址
* @param refreshToken 微软应用返回的refresh_token
* @param refreshToken 微软
应用返回的refresh_token
* @return full url
*/
public
static
String
getMicrosoftRefreshUrl
(
String
clientId
,
String
clientSecret
,
String
redirectUrl
,
String
refreshToken
)
{
return
MessageFormat
.
format
(
MICROSOFT_REFRESH_TOKEN_PATTERN
,
ApiUrl
.
MICROSOFT
.
refresh
(),
clientId
,
clientSecret
,
redirectUrl
,
refreshToken
);
}
private
static
final
String
MI_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&redirect_uri={2}&response_type=code&scope=user/profile%20user/openIdV2%20user/phoneAndEmail&state={3}&skip_confirm=false"
;
private
static
final
String
MI_ACCESS_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&redirect_uri={3}&code={4}&grant_type=authorization_code"
;
private
static
final
String
MI_USER_INFO_PATTERN
=
"{0}?clientId={1}&token={2}"
;
private
static
final
String
MI_REFRESH_TOKEN_PATTERN
=
"{0}?client_id={1}&client_secret={2}&redirect_uri={3}&refresh_token={4}&grant_type=refresh_token"
;
/**
* 获取小米授权地址
*
...
...
update.md
浏览文件 @
f3619f48
### 2019/05/28
1.
增加小米账号和微软的授权登陆
2.
发布1.5.0版本
### 2019/05/26
1.
增加抖音和Linkedin的授权登陆
2.
修改部分图片命名
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录