Wechat-Group / WxJava

微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,视频号,公众号等的后端开发
Apache License 2.0
29.81k stars 8.54k forks source link

开放平台获取公众号jsapi签名报错 #779

Closed TonyLuo closed 6 years ago

TonyLuo commented 6 years ago

公众号页面通过开放平台的createJsapiSignature获取的签名去初始化jssdk时报签名不合法的错误 : config:fail,Error: invalid signature 感觉应该是没有通过第三方平台的授权公众号token去获取jsapi_ticket造成的。

  public WxJsapiSignature createJsapiSignature(String appId, String url) throws WxErrorException {
       return openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).createJsapiSignature(url);
    }
  wx.config({
                debug: true,
                appId: config.appId,
                timestamp: res.timestamp,
                nonceStr: res.nonceStr,
                signature: res.signature,
                jsApiList: [
                    'checkJsApi',]
})

参考文档: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1421823488&token=&lang=zh_CN 而第三方平台开发者代替公众号使用JS SDK的步骤如下:

1、在申请第三方平台时填写的网页开发域名,将作为旗下授权公众号的JS SDK安全域名(详情见“接入前必读”-“申请资料说明”)

2、在第三方平台的网页中正常引入JS文件

3、通过config接口注入权限验证配置,但在获取jsapi_ticket时,不通过公众号的access_token来获取,而是通过第三方平台的授权公众号token(公众号授权给第三方平台后,第三方平台通过“接口说明”中的api_authorizer_token接口得到的token),来获取jsapi_ticket,然后使用这个jsapi_ticket来得到signature,进行JS SDK的配置和开发。注意JS SDK的其他配置中,其他信息均为正常的公众号的资料(而非第三方平台的)。

007gzs commented 6 years ago

通过getWxMpServiceByAppid获取到的WxMpService实例中所有access_token都已经使用api_authorizer_token