为了账号安全,请及时绑定邮箱和手机立即绑定

JustAuth使用教程:实现Github授权登录

标签:
Java 源码 开源

前言

上次给大家安利的一款开源的第三方授权登陆的工具库,到目前为止码云已获得star,Github上也已经有40多个start了。

在项目上线第一天就被码云列为推荐项目,且到目前为止,三天内都位列日和周排行榜第一名。
图片描述
图片描述
这个项目取名JustAuth,如您所见,就像它的名字一样,这仅仅是一个第三方授权登录的工具类库,仅此而已。

本文会总结一下如何使用Github实现授权登录

接入流程

这个开源库的接入流程就如上篇文章[链接]所说,总共分三步,并且所有平台目前的接入流程都是按照这三步操作。

  1. 申请注册第三方平台的开发者账号
  2. 创建第三方平台的应用,获取配置信息(id, secret, callbackUrl)
  3. 使用该工具实现授权登陆

实际操作

1.注册Github账号

2.创建第三方应用

在应用管理页面,选择OAuth App,然后点击右上方的New OAuth App按钮进入新建应用页面

图片描述

Application name 一般填写自己的网站名称即可
Application description 一般填写自己的应用描述即可
Homepage URL 填写自己的网站首页地址
Authorization callback URL 重点,该地址为用户授权后需要跳转到的自己网站的地址,默认携带一个code参数

以上信息输入完成后,点击下方绿色的Register applaction按钮创建应用。创建完成后,点击进入应用详情页,可以看到应用的密钥等信息

图片描述

copy以下三个信息:Client IDClient SecretAuthorization callback URL

3.使用JustAuth实现授权登陆

创建授权request

AuthRequest authRequest = new AuthGithubRequest(AuthConfig.builder()
                .clientId("Client ID")
                .clientSecret("Client Secret")
                .redirectUri("Authorization callback URL")
                .build());

生成授权地址

authRequest.authorize()

生成授权地址后,可以直接redirect到授权页面。

授权完成后,进行登录

// code为用户授权后回调回本地系统时携带的参数,不可重复利用
AuthResponse response = authRequest.login(code);

response数据结构如下:

{
  "code": 0,
  "msg": null,
  "data": {
    "username": "zhangyd-c",
    "avatar": "https://avatars3.githubusercontent.com/u/12689082?v=4",
    "blog": "https://www.zhyd.me",
    "nickname": "yadong.zhang",
    "company": "innodev",
    "location": "Beijing",
    "email": "yadong.zhang0415@gmail.com",
    "remark": "心之所向,无所不能",
    "gender": null,
    "source": "GITHUB",
    "accessToken": "f00969002de1a7b4bf411c39d917dab657c9ee5fd"
  }
}

到此为止,Github授权登录功能就算完成了!

最后,附上上面的小例子的整合版代码:

import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.request.AuthGithubRequest;
import me.zhyd.oauth.request.AuthRequest;
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/github")
    public void renderAuth(HttpServletResponse response) throws IOException {
        AuthRequest authRequest = getAuthRequest();
        response.sendRedirect(authRequest.authorize());
    }

    @RequestMapping("/callback/github")
    public Object login(String code) {
        AuthRequest authRequest = getAuthRequest();
        return authRequest.login(code);
    }

    private AuthRequest getAuthRequest() {
        return new AuthGithubRequest(AuthConfig.builder()
                .clientId("Client ID")
                .clientSecret("Client Secret")
                .redirectUri("Authorization callback URL")
                .build());
    }
}

更多api,请参考原项目文档,项目地址

点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
9124
获赞与收藏
5503

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消