收藏
回答

同一个微信开放平台下的不同第三方平台绑定的小程序如何同时授权运转?

问题模块 框架类型 问题类型 提审时间 AppID
审核 小程序 Bug 2018-12-14 wx70b81671c2fecac9

问题描述:

原来的小程序都绑定在微信开放平台的第一个第三方平台下,现第一个第三方平台的小程序绑定个数已达上限,故在同一个开放平台下创建了第二个第三方平台.如何改变代码使得绑定第一个开放平台的小程序任然能正常运作,然后第二个开放平台绑定的小程序也能授权运转?


环境背景:第三方平台绑定的小程序都是不同主体下的

尝试方法:将代码中的绑定的第三方平台的appsecret和appid改为第二个第三方平台,结果微信返回预授权码不合法,微信授权回调接口提示appid不合法


### 相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

//此为获取预授权码接口

public static void acquireComponentAccessToken() {

        String appid = PROP.get("wx.open.appid");

        String appsecret = PROP.get("wx.open.appsecret");

        String componentVerifyTicket = DecryptedComponentVerifyTicket.getInstance().getComponentVerifyTicket();

        Map<String, String> params = new HashMap<>();

        params.put("component_appid", appid);

        params.put("component_appsecret", appsecret);

        params.put("component_verify_ticket", componentVerifyTicket);

        String json = null;

        try {

            json = om.writeValueAsString(params);

        } catch (JsonProcessingException e) {}

        String resp = HttpKit.post(ACQUIRE_COMPONENT_ACCESS_TOKEN_URL, json);

        // LOG.info("(WXOPEN) JSON: " + json);

        LOG.info("(WXOPEN) ACQUIRE_COMPONENT_ACCESS_TOKEN: " + resp);

        Map<String, Object> map = null;

        try {

            map = om.readValue(resp, Map.class);

        } catch (IOException e) {}

        ComponentAccessToken componentAccessToken = ComponentAccessToken.getInstance();

        componentAccessToken.setComponentAccessToken((String) map.get("component_access_token"));

        componentAccessToken.setExpiresIn((Integer) map.get("expires_in"));

        componentAccessToken.setRefleshTime(new Date());

    }

    

    //此为微信回调接口

    public void index() {

        log.info("notify请求");

        // 获取component_verify_ticket推送,解密后存入单例对象

        EncryptedComponentVerifyTicket ticket = new EncryptedComponentVerifyTicket();

        wirePropertyFromRequest(ticket);

        // log.info("(WXOPEN) ticket: " + ticket);

        try {

            AuthorizerAccessTokenUtil.decrypt(ticket);

        } catch (AesException e) {

            log.error("解密错误:" + e.getMessage());

        }

        // 根据是否失效,来向微信请求或从单例取得component_access_token

        if (ComponentAccessToken.isExpired()) {

            AuthorizerAccessTokenUtil.acquireComponentAccessToken();

        }

        log.info("刷新授权");

        // 扫描`wx_miniapp_auth`表,将10min后失效的数据刷新授权

        List<WXMiniappAuth> miniappAuthList = WXMiniappAuth.dao.list();

        AuthorizerAccessTokenUtil.refreshAuthorizerAccessToken(miniappAuthList);

        renderText("success");

    }


期待结果:第二个开放平台也能授权成功新的小程序

错误信息:微信返回预授权码不合法,微信授权回调接口提示appid不合法


最后一次编辑于  2018-12-14  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏