WEB端第三方登陆接入 - 微信

相比QQ登陆接入,两个方式差不多,在代码方面微信更简单

但是微信开通第三方登陆功能可是废了不少事

需要开通微信公众平台和开放平台,在开放平台还要有开发权限

注:截至到2020-7月份,开放平台认证是要花300块的

由于是企业开通的,流程也真是相当不少

在此,小小的吐槽一下

具体流程就不说了,注意,开放平台开通后,公众平台还要绑定一下.

建议:多打电话问问客服,仔细看接入文档

说一下代码方面的流程:

1 - 前端GET请求一个地址,打开的是一个二维码

2 - 手机扫码确认登陆后,微信会带参回调一个页面

3 - 在回调页面获取code,拿着code请求后端接口,获取openId

4 - 通过openId获取用户,获取到就登陆,否则提示

另外还有绑定微信的功能

上代码:

1 - 前端GET请求,打开的是一个二维码,扫码登陆

const base_uri = 'https://open.weixin.qq.com/connect/qrconnect?'
const app_id = '***'
const redirect_uri = 'encodeUri'
const uri = base_uri + 'appid=' + app_id + '&redirect_uri=' + redirect_uri + '&response_type=code&scope=snsapi_login&state=自定义state'
window.location.href = uri

2 - 回调页面获取code,带着code请求后端接口,code在url中,获取一下

3 - 获取openId

public String getWXOpenId(String code) {
    String accessTokenUri = String.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", wxAppId, wxAppKey, code);
    String accessTokenResponse = httpUtils.Get(accessTokenUri);
    JSONObject responseJobj = JSONObject.fromObject(accessTokenResponse);
    return responseJobj.getString("openid");
}

4 - 微信登陆,接口就不写了,有token就返回,为null就提示用户

public String wxLogin(String code) {
    String openId = getWXOpenId(code);
    User user = ...根据openId获取用户;
    if (user == null) {
        return null;
    }
    return getUserToken(user);
}

至此,微信登陆完成,经过测试

5 - 微信绑定

说下流程:

用户登陆后,在页面上有个绑定按钮,用户点击,后端可以通过token获取到用户

走一遍微信登陆流程,获取openId,保存,openId一个用户一个

可以通过state区分登陆和绑定

至此,微信绑定完成

 

posted @ 2020-08-26 13:40  御简  阅读(1031)  评论(0编辑  收藏  举报