快速完成第三方授权登录的工具类库JustAuth

快速完成第三方授权登录的工具类库JustAuth

2022-09-02 0 405
资源编号 38013 最近更新 2022-09-02
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的是一个开源的第三方授权登录的工具类库——JustAuth。

快速完成第三方授权登录的工具类库JustAuth

JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得So easy!

JustAuth 集成了诸如:Github、Gitee、支付宝、新浪微博、微信、Google、Facebook、Twitter、StackOverflow等国内外数十家第三方平台。

快速完成第三方授权登录的工具类库JustAuth

JustAuth功能:

  • 丰富的 OAuth 平台,支持国内外数十家知名的第三方平台的 OAuth 登录。
  • 自定义 state,支持自定义 State 和缓存方式,开发者可根据实际情况选择任意缓存插件。
  • 自定义 OAuth,提供统一接口,支持接入任意 OAuth 网站,快速实现 OAuth 登录功能。
  • 自定义 Http,接口 HTTP 工具,开发者可以根据自己项目的实际情况选择相对应的HTTP工具。
  • 自定义 Scope,支持自定义 scope,以适配更多的业务场景,而不仅仅是为了登录。
  • 代码规范简单,代码严格遵守阿里巴巴的编码规约,结构清晰、逻辑简单。

如何使用

  • 使用步骤

使用JustAuth总共分三步(这三步也适合于JustAuth支持的任何一个平台):

1. 申请注册第三方平台的开发者账号

2. 创建第三方平台的应用,获取配置信息( accessKey , secretKey , redirectUri )

3. 使用该工具实现授权登陆

  • 使用方式

引入依赖

<dependency>
    <groupId>me.zhyd.oauth</groupId>
    <artifactId>JustAuth</artifactId>
    <version>${latest.version}</version>
</dependency>

最新版本:
https://search.maven.org/search?q=g:me.zhyd.oauth%20AND%20a:JustAuth

调用api

// 创建授权request
AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
        .clientId("clientId")
        .clientSecret("clientSecret")
        .redirectUri("redirectUri")
        .build());
// 生成授权页面
authRequest.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数
// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
authRequest.login(callback);

注意:JustAuth从 v1.14.0 开始默认集成了的 simple-http 作为HTTP通用接口,鉴于一般项目中都已经集成了HTTP工具,比如OkHttp3、apache HttpClient、hutool-http,因此为了减少不必要的依赖,从v1.14.0 开始JustAuth将不会默认集成 hutool-http,如果开发者的项目是全新的或者项目内没有集成HTTP实现工具,请自行添加对应的HTTP实现类。

  • API分解

JustAuth的核心就是一个个的 request ,每个平台都对应一个具体的 request 类,所以在使用之前,需要就具体的授权平台创建响应的 request

// 创建授权request
AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
        .clientId("clientId")
        .clientSecret("clientSecret")
        .redirectUri("redirectUri")
        .build());

获取授权链接

String authorizeUrl = authRequest.authorize("state");

获取到 authorizeUrl 后,可以手动实现 redirect 到 authorizeUrl 上

伪代码

/**
 * @param source 第三方授权平台,以本例为参考,该值为gitee(因为上面声明的AuthGiteeRequest)
 */
@RequestMapping("/render/{source}")
public void renderAuth(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
    AuthRequest authRequest = getAuthRequest(source);
    String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
    response.sendRedirect(authorizeUrl);
}

注意:state 建议必传!state 在OAuth的流程中的主要作用就是保证请求完整性,防止CSRF风险,此处传的 state 将在回调时传回

登录(获取用户信息)

AuthResponse response = authRequest.login(callback);

授权登录后会返回code(auth_code(仅限支付宝)、authorization_code(仅限华为))、state,1.8.0版本后,用 AuthCallback 类作为回调接口的入参

伪代码

/**
 * @param source 第三方授权平台,以本例为参考,该值为gitee(因为上面声明的AuthGiteeRequest)
 */
@RequestMapping("/callback/{source}")
public Object login(@PathVariable("source") String source, AuthCallback callback) {
    AuthRequest authRequest = getAuthRequest(source);
    AuthResponse response = authRequest.login(callback);
    return response;
}

注意:第三方平台中配置的授权回调地址,以本文为例,在创建授权应用时的回调地址应为:[host]/callback/gitee

刷新token

注意:refresh 功能,并不是每个平台都支持

AuthResponse response = authRequest.refresh(AuthToken.builder().refreshToken(token).build());

伪代码

/**
 * @param source 第三方授权平台,以本例为参考,该值为gitee(因为上面声明的AuthGiteeRequest)
 * @param token  login成功后返回的refreshToken
 */
@RequestMapping("/refresh/{source}")
public Object refreshAuth(@PathVariable("source") String source, String token){
    AuthRequest authRequest = getAuthRequest(source);
    return authRequest.refresh(AuthToken.builder().refreshToken(token).build());
}

取消授权

注意:revoke 功能,并不是每个平台都支持

AuthResponse response = authRequest.revoke(AuthToken.builder().accessToken(token).build());

伪代码

/**
 * @param source 第三方授权平台,以本例为参考,该值为gitee(因为上面声明的AuthGiteeRequest)
 * @param token  login成功后返回的accessToken
 */
@RequestMapping("/revoke/{source}/{token}")
public Object revokeAuth(@PathVariable("source") String source, @PathVariable("token") String token) throws IOException {
    AuthRequest authRequest = getAuthRequest(source);
    return authRequest.revoke(AuthToken.builder().accessToken(token).build());
}

集成抖音登录示例

1. 申请应用

访问抖音开放平台 抖音开放平台 并登录,如果没有账号,请自行注册。

登录完成后,需要进行企业认证(只能企业认证)。

认证通过后,将显示如下内容:

快速完成第三方授权登录的工具类库JustAuth

在“管理中心”-“应用管理”页面,选择“创建应用”,再创建应用页面,选择“网站应用”

快速完成第三方授权登录的工具类库JustAuth

按需填写内容,注意,不可使用本地 host,只需要配置根域即可,如本例配置为 justauth.cn

填写示例如下:

快速完成第三方授权登录的工具类库JustAuth

填写完成后,提交审核,等待平台审核完成后,再进行下一步操作。

copy以下三个信息:App ID、App Key 和 网站回调域

2. 集成JustAuth

集成部分参考上一章引入依赖、创建Request和生成授权地址。

我们可以直接使用以下方式生成第三方平台的授权链接:

String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());

这个链接我们可以直接在后台重定向跳转,也可以返回到前端后,前端控制跳转。前端控制的好处就是,可以将第三方的授权页嵌入到 iframe 中,适配网站设计。

快速完成第三方授权登录的工具类库JustAuth

更多内容大家可自行前往阅读。

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 快速完成第三方授权登录的工具类库JustAuth https://www.7claw.com/38013.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务