记录一次使用JustAuth进行微信公众号的简单扫码登录

前言:由于工作需要对接微信公众号登录,所以就去了解了JustAuth这个依赖,这中间遇到了很多坑,(别笑我)我弄了整整两天…

前置操作

一:安装依赖

        <!--JustAuth依赖-->
        <dependency>
            <groupId>me.zhyd.oauth</groupId>
            <artifactId>JustAuth</artifactId>
            <version>1.16.5</version>
        </dependency>

        <!-- okhttp3/okhttp模块 -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.10.0</version>
        </dependency>

二:具体的Controller

import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.request.AuthRequest;
import me.zhyd.oauth.request.AuthWeChatMpRequest;
import me.zhyd.oauth.utils.AuthStateUtils;
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 AuthDemoController {
    @RequestMapping("/render")
    public void renderAuth(HttpServletResponse response) throws IOException {
        AuthRequest authRequest = getAuthRequest();
        response.sendRedirect(authRequest.authorize(AuthStateUtils.createState()));
    }

    /**
     * 获取用户信息
     * @param authCallback
     * @return
     */
    @RequestMapping("/callback")
    public Object getUserInfo(AuthCallback authCallback) {
        AuthRequest authRequest = getAuthRequest();
        AuthResponse login = authRequest.login(authCallback);
        AuthUser authUser = (AuthUser) login.getData();
        String openId = authUser.getUuid();
        String nickname = authUser.getNickname();
        String headimgurl = authUser.getAvatar();
        String username = authUser.getUsername();
        return authUser;
    }

    private AuthRequest getAuthRequest() {
        return new AuthWeChatMpRequest(AuthConfig.builder()
                .clientId("xxxxxxxxx")
                .clientSecret("xxxxxxxxxxxxxx")
                .redirectUri("http://xxxxxxxxxxxxx/oauth/callback")
                .build());
    }
}

三:操作

  • 记得去 微信公众号配置自己的域名并且进行测试,
  • 这个修改成自己的域名
    这里修改成自己的服务器域名
    然后就可以访问这个链接了

http://xxxxxxxxxxx/oauth/render

四:访问上面那个链接你会得到这样一个界面

在这里插入图片描述

  • 你可以把上面地址栏中的地址,从微信打开,或者把这个地址栏中的链接生成二维码,引导用户扫码
  • 扫码完成后,认证成功之后,用户就会跳转到你在后端预先设置好的回调地址,就是这个

http://xxxxxxxxxxxxx/oauth/callback

后记:记得使用一个http发送请求的依赖,我这里使用的是okhttp3的依赖…到此就结束了,希望对大家有所帮助

史上最全的整合第三方登录的工具,目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软和今日头条等第三方平台的授权登录。 Login, so easy!JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录SDK,让登录变得So easy!项目开源地址:gitee | github特点废话不多说,就俩字:全:已集成十多家第三方平台(国内外常用的基本都已包含),后续依然还有扩展计划!简:API就是奔着最简单去设计的(见后面快速开始),尽量让您用起来没有障碍感!快速开始引入依赖     me.zhyd.oauth     JustAuth     1.8.0 调用api// 创建授权request AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()         .clientId("clientId")         .clientSecret("clientSecret")         .redirectUri("redirectUri")         .state("state")         .build()); // 生成授权页面 authRequest.authorize(); // 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数 authRequest.login(callback);注:1.8.0版本后,增加了state参数校验,用于防止CSRF。强烈建议,保证单次流程内state的唯一性,且每个state只可用一次。配套Demo:JustAuth-demo具体的例子可以参考:实现Gitee授权登录实现Github授权登录API列表平台API类 SDKAuthGiteeRequest参考文档AuthGithubRequest参考文档AuthWeiboRequest参考文档AuthDingTalkRequest参考文档AuthBaiduRequest参考文档AuthCodingRequest参考文档AuthTencentCloudRequest参考文档AuthOschinaRequest参考文档AuthAlipayRequest参考文档AuthQqRequest参考文档AuthWeChatRequest参考文档AuthTaobaoRequest参考文档AuthGoogleRequest参考文档AuthFacebookRequest参考文档AuthDouyinRequest参考文档AuthLinkedinRequest参考文档AuthMicrosoftRequest参考文档AuthMiRequest参考文档AuthToutiaoRequest参考文档AuthCsdnRequest无请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用。so, 本项目中的CSDN登录只能针对少部分用户使用了后续开发计划参考:[开发计划] 待扩展的第三方平台另外,期待您和我一起完善这个项目!贡献代fork本项目到自己的repo把fork过去的项目也就是你仓库中的项目clone到你的本地修改代commit后push到自己的库发起PR(pull request) 请求等待作者合并致谢在项目立项初期,也对当前开源圈的一些相同类型的项目作过调研,同时本项目也参考过这些项目,再次感谢开源圈内的朋友。YurunOAuthLogin: PHP 第三方登录授权 SDK阿里妈妈MUX倾力打造的矢量图标库-iconfont: 本文档中的图标大部分取自该平台
要实现微信公众号登录功能,首先需要掌握微信公众号开发和配置,以及如何使用access_token来调用微信的接口。在前端,使用微信JS-SDK可以实现功能,并通过监听事件获取场景值。后端则需要处理这些场景值,实现用户身份验证和账户绑定。 参考资源链接:[Python实现微信公众号登录:绑定与权限管理](https://wenku.csdn.net/doc/5xcmuscfkf) 具体步骤如下: 1. 配置微信公众号:在微信公众平台完成开发者认证,获取必要的AppID和AppSecret,这些信息将用于后续获取access_token。 2. 获取access_token:通过调用微信提供的接口,使用AppID和AppSecret获取access_token。access_token是调用微信API的凭证。 3. 创建临时二维使用access_token调用微信的创建二维API,传入场景值(如时间戳)作为`scene_id`参数。生成的二维将用于前端。 4. 前端与场景值获取:用户通过微信JS-SDK描二维后,前端通过微信API获取到场景值,并将这个值发送到后端服务器。 5. 后端处理场景值:后端服务器接收到场景值后,根据场景值进行用户身份验证或账户绑定操作。若用户已绑定账号,可以直接登录;若未绑定,引导用户完成绑定流程。 6. 绑定流程实现:通过后端逻辑处理绑定请求,包括手机号验证等,确保用户信息的安全性。 7. 安全性考虑:在实现过程中,要注意场景值的唯一性,防止恶意攻击和信息泄露。同时,定期更新***s_token,确保接口调用的有效性。 上述步骤涵盖了微信公众号登录的整个实现流程,每一环节都需要精心设计和测试,以确保功能的稳定性和安全性。为了深入理解和掌握这些技术细节,建议阅读《Python实现微信公众号登录:绑定与权限管理》这份文档。 参考资源链接:[Python实现微信公众号登录:绑定与权限管理](https://wenku.csdn.net/doc/5xcmuscfkf)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸识SQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值