跳至主要內容

一款小而全而美的第三方登录开源组件

TJ君原创开源推荐开源大约 4 分钟

随着微信、支付宝等航母级应用在众人身边的普及,越来越多的应用、网站在登陆的时候除了提供注册用户外,还直接提供第三方登录的方式,也就是直接关联微信、支付宝这类应用,用已有的账号和密码来快速完成当前应用或网站的登录注册。

第三方登录的好处对于应用来说,在于降低用户注册的成本,毕竟有时候只要点一下就可以登陆和需要填写各种信息注册的两种选择下,往往就是使用和放弃的区别。

对于用户来说,通过第三方登录,直接获取用户头像昵称等基本个人信息,无需用户自行设置;共享账号已有的用户关系,用户进入产品中就能找到熟悉的人,发现同样使用该应用也用同样第三方方式登录的好友,会有惊喜感;另外用户在使用多个应用时,只需使用第三方登录即可,无需记得每个平台的账户和密码。便捷程度上的确是未来发展的大趋势。

今天呢,小编给大家分享的就是一款超级全面的第三方登录开源工具。

JustAuth

JustAuth曾经被评为Gitee 最有价值开源项目,是一款小而全而美的第三方登录开源组件。

截止目前为止,JustAuth已集成支持如:

Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软、今日头条、Teambition、StackOverflow、Pinterest、人人、华为、企业微信、酷家乐、Gitlab、美团、饿了么、推特、飞书、京东、阿里云、喜马拉雅、Amazon、Slack和 Line 等多个第三方平台的授权登录。

也就是说,作为一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得十分简单。

除了上述的这些平台,开发计划仍然还在持续扩展中,作者表示不会停下自己的脚步。

而工具的初衷,就是简单。所以相关的API就是奔着最简单去设计的,尽量让用户用起来没有障碍感!

对于实现的功能的自我介绍,作者倒是没有花太多的华丽辞藻:

小编先带你看下如何快速开始使用:

引入依赖

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

引入快照版本

(快照版本是功能的尝鲜,并不保证稳定性。建议不要在生产环境中使用。)

如下任选一种 HTTP 工具 依赖,项目内如果已有,请忽略。另外需要特别注意,如果项目中已经引入了低版本的依赖,请先排除低版本依赖后,再引入高版本或者最新版本的依赖

  • hutool-http
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-http</artifactId>
    <version>5.7.7</version>
</dependency>
  • httpclient
<dependency>
 <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.5.13</version>
</dependency>
  • okhttp
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>4.9.1</version>
</dependency>

调用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);

**Builder 方式一 静态配置 AuthConfig **

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

**Builder 方式二 动态获取并配置 AuthConfig **

AuthRequest authRequest = AuthRequestBuilder.builder()
    .source("gitee")
    .authConfig((source) -> {
        // 通过 source 动态获取 AuthConfig
        // 此处可以灵活的从 sql 中取配置也可以从配置文件中取配置
        return AuthConfig.builder()
            .clientId("clientId")
            .clientSecret("clientSecret")
            .redirectUri("redirectUri")
            .build();
    })
    .build();
Assert.assertTrue(authRequest instanceof AuthGiteeRequest);
System.out.println(authRequest.authorize(AuthStateUtils.createState()));

Builder 方式支持自定义的平台

AuthRequest authRequest = AuthRequestBuilder.builder()
    // 关键点:将自定义实现的 AuthSource 配置上
    .extendSource(AuthExtendSource.values())
    // source 对应 AuthExtendSource 中的枚举 name
    .source("other")
    // ... 其他内容不变,参考上面的示例
    .build();

想进一步深入探讨该工具,实现各平台第三方登录功能的?

关注公众号“TJ君”,回复“第三方”,获取仓库地址!

上次编辑于:
贡献者: 程序猿DD