微信小程序开发对接第三方

客户端集成微信登录

2020-02-26  本文已影响0人  垃圾简书_吃枣药丸

1.申请账号-微信开放平台
https://open.weixin.qq.com/

  1. 创建移动应用


    image.png
  2. 可得到AppID与AppSecret


    image.png
  3. 客户端(IOS Android)集成微信登录
    目的是获取临时票据 code,传给服务端
    略.

  1. 服务端
    文档: https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

5.1 通过客户端传过来的code,以及AppId和AppSecret调用微信服务,获取accessToken以及openId

        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";
        //获取accessToken
        String accessTokenStr = restTemplate.getForObject(url, String.class);
        JSONObject accessTokenObj = JSON.parseObject(accessTokenStr);
        log.info("wechatLogin accessTokenResult:{}", accessTokenObj);
        if (StringUtils.isNotEmpty(accessTokenObj.getString("errcode"))) {
            throw Excep.le(UserErrMsgs.Err_000900040013);
        }

        //用户的openId
        String openId = accessTokenObj.getString(WeChatConsts.OPEN_ID);
       //用户的accessToken,可用来获取微信用户的基本信息
        String accessTokenObjString = accessTokenObj.getString(WeChatConsts.ACCESS_TOKEN);

openId: 每个微信用户对应一个微信应用都有一个唯一的openId,所以可以根据获取到的openId是否绑定了本系统的用户来判断用是否已经进行了微信绑定。

5.2 获取用户的基本信息(解决乱码问题)

        String result = new RestTemplate().getForObject("https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId, String.class);
        JSONObject jsonObject = JSON.parseObject(new String(result.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
        if (StringUtils.isNotEmpty(jsonObject.getString("errcode"))) {
            return null;
        }

上一篇 下一篇

猜你喜欢

热点阅读