微信小程序授权后端几个常用的接口

    /**
     * 获取用户openid
     * @param request
     * @return
     */
 @RequestMapping(value="/openid")
    public Object openid(HttpServletRequest request){
        Map<String,Object> map = new HashMap<String,Object>();
        Map<String,Object> datamap = new HashMap<String,Object>();
        try {
            String code = request.getParameter("code");
            log.info("openid ----- code :"+code);
            if (StringUtils.isBlank(code)){
                map.put("res", 0);
                map.put("error", "code is null");
                map.put("data", null);
                return map;
            }
             1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid 
            //请求参数
            String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + "authorization_code";
            //发送请求
            String sr = sendGet("https://api.weixin.qq.com/sns/jscode2session", params);
            //解析相应内容(转换成json对象)
            JSONObject json = JSONObject.fromObject(sr);
            log.info("openid ----- json :"+json);
            //获取会话密钥(session_key)
            String session_key = json.get("session_key").toString();
            //用户的唯一标识(openid)
            String openid = (String) json.get("openid");
            map.put("res",1);
            map.put("error","");
            datamap.put("openid",openid);
            datamap.put("session_key",session_key);
            map.put("data",datamap);
        }catch (Exception e){
            log.error("-----openid     error:"+e);
            map.put("res", 0);
            map.put("error", "error");
            map.put("data", null);
        }
        log.info("openid-----map:"+map);
        return map;
    }
/**
     * 获取用户详细信息,获取用户unionId的唯一方式
     * @param request
     * @return
     */
 @RequestMapping(value="/user")
    public Object user(HttpServletRequest request){
        Map<String,Object> map = new HashMap<String,Object>();
        Map<String,Object> userInfo = new HashMap<>();
        try {
            HttpSession session = request.getSession();
            String openId = request.getParameter("openid");
            String encryptedData = request.getParameter("encryptedData");
            String iv = request.getParameter("iv");
            String session_key = request.getParameter("session_key");
            String code = request.getParameter("code");

            log.info("userinfo-----encryptedData:"+encryptedData);
            log.info("userinfo-----iv:"+iv);
            log.info("userinfo-----session_key:"+session_key);
            log.info("userinfo-----code:"+code);

            if (StringUtils.isBlank(encryptedData)||StringUtils.isBlank(iv)){
                map.put("res", 0);
                map.put("error", "encryptedData || iv is null");
                map.put("data", null);
                return map;
            }
            String result = decrypt(encryptedData, session_key, iv);
            log.info("user-----result:"+result);
            if (result != null && result.length() > 0) {
                JSONObject userInfoJSON = JSONObject.fromObject(result);

                String openid = (String) userInfoJSON.get("openId");
                userInfo.put("openid", openid);
                userInfo.put("nickName", userInfoJSON.get("nickName"));
                userInfo.put("gender", userInfoJSON.get("gender"));
                userInfo.put("city", userInfoJSON.get("city"));
                userInfo.put("province", userInfoJSON.get("province"));
                userInfo.put("country", userInfoJSON.get("country"));
                userInfo.put("avatarUrl", userInfoJSON.get("avatarUrl"));
                userInfo.put("unionId", userInfoJSON.get("unionId"));
            }
        }catch (Exception e){
            log.error("-----user     error:"+e);
            map.put("res", 0);
            map.put("error", "error");
            map.put("data", null);
        }
        log.info("user-----map:"+map);
        return map;
    }
    /**
     * AES解密
     * @param data           //密文,被加密的数据
     * @param key            //秘钥
     * @param iv             //偏移量
     * @return
     * @throws Exception
     */
  

  public static String decrypt(String data, String key, String iv) throws Exception {
//        initialize();
        //被加密的数据
        byte[] dataByte = Base64.decodeBase64(data);
        //加密秘钥
        byte[] keyByte = Base64.decodeBase64(key);
        //偏移量
        byte[] ivByte = Base64.decodeBase64(iv);
        //            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
        SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
        AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
        parameters.init(new IvParameterSpec(ivByte));
        cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
        byte[] resultByte = cipher.doFinal(dataByte);
        if (null != resultByte && resultByte.length > 0) {
            String result = new String(resultByte, "UTF-8");
            return result;
        }
        return null;
    }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序的php后端搭建,主要分为以下几个步骤: 1. 安装php环境和相关依赖; 2. 配置php环境和相关依赖; 3. 编写后端代码; 4. 部署代码到服务器。 在搭建之前,你需要先确定要使用的php框架和数据库。目前常见的php框架有Laravel、Yii2、ThinkPHP等,而数据库则有MySQL、PostgreSQL等。这里以Laravel和MySQL为例。 1. 安装php环境和相关依赖 这里推荐使用PHP-FPM和NGINX,使用它们可以大大提升php应用的性能和稳定性。在安装完php和 NGINX 后,还需要安装相应的依赖,比如Composer等。 2. 配置php环境和相关依赖 在配置php环境和相关依赖时,需要分别对php、Composer和NGINX进行配置。配置好后就可以进行后端代码的编写。 3. 编写后端代码 使用Laravel框架编写php后端代码,可以利用它丰富的语法和类库,快速地实现业务逻辑。比如,实现用户注册、登录、权限管理等功能。 4. 部署代码到服务器 在开发和测试完成后,需要将php后端代码部署到服务器上。需要将代码和依赖一起打包,上传到服务器上。在服务器上,需要配置好环境、数据库等,然后再启动服务,从而让微信小程序前端可以请求到后端以实现想要的效果。 这是一个较为简单的微信小程序php后端搭建过程,实际操作会因人而异。如果您初次尝试,建议细心阅读相关配置文件和配置文档,以便稳定运行您的小程序。 ### 回答2: 微信小程序后端搭建需要使用到PHP语言,具体操作流程如下: 首先,需要搭建PHP环境,可以使用工具如WAMP、XAMPP或LAMP等。安装完成后,需要新建一个PHP文件。 接下来,需要引入微信官方提供的SDK,代码如下: require_once "{path}/wechat_sdk.php"; 除了SDK以外,还需要配置一些参数,如appId、appSecret、token、encodingAESKey等。 完成以上步骤后,就可以开始开发后端逻辑了。开发过程中需要调用微信官方提供的api,如获取access_token、获取用户信息等。 在开发过程中,需要注意安全问题,如接口的安全保护、防止SQL注入等。同时,需要对接口进行测试,查看返回数据是否符合预期。 最后,将开发好的后端逻辑部署到服务器上,接着就可以与微信小程序前端进行交互了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值