关于网友提出的“jfinal weixin使用jssdk报permission denied”问题疑问,本网通过在网上对“jfinal weixin使用jssdk报permission denied”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:jfinal weixin使用jssdk报permission denied
描述:
@JFinal 你好,想跟你请教个问题:
在使用最新的jfinal weixin时,不能调test.jsp中的测试jssdk,点击按钮都没反应。
再者,我用的是自己微信公众号,已认证。我自定义了页面使用通过button来调wx.scanQRCode(扫一扫)和wx.chooseImage都是报permission denied,而wx.hideOptionMenu和wx.getNetworkType调用是成功的。
我已经引入了js_sdk.jsp文件。还有奇怪的是,我把wx.config的jsapilist中hideOptionMenu和getNetworkType删掉也能调用,去掉引用js_sdk.jsp,也能调这两个。所以我怀疑wx.config就没起到作用,或者我的wx.config没执行成功,怎么判断wx.config是否执行正确呢?
js_sdk.jsp中直接写wx.config这样可以吗?不应该包括在中吗?
帮忙看下。调了好久了。
解决方案1:引用来自“puyugongzi”的评论
找到原因了。不能用gson jar包。在AccessToken.java文件,如下代码
Map temp = JsonUtils.decode(jsonStr, Map.class);
access_token = (String) temp.get("access_token");
System.out.println("access expires_in:"+temp.get("expires_in"));
System.out.println("access errcode:"+temp.get("errcode"));
expires_in = (Integer) temp.get("expires_in");
gson会将expires_in的值7200,转成7200.0,在
expires_in = (Integer) temp.get("expires_in");
这一句就出错了。打印日志我也贴一下。 json:{"access_token":"W1lqLK3ED-CSAAAqsj8L7R0LJeysKsudWO42CJvUuIEf5wW971XKviqc3_NSnNxgzqR-b2qzPnfk7C_C3jeUeXCBIIaYe_-h_60hlcQVcwcMSRdAIADJI","expires_in":7200}
access expires_in:7200.0
所以在部署时不要用gson,我用了fastjson。
现在可以测试页面可以调jssdk了。但是我拷贝一份测试页面,创建菜单去调却报invalid signature签名错误。另外,感谢 孤独的3 的解答。
解决方案2:引用来自“puyugongzi”的评论
找到原因了。不能用gson jar包。在AccessToken.java文件,如下代码
Map temp = JsonUtils.decode(jsonStr, Map.class);
access_token = (String) temp.get("access_token");
System.out.println("access expires_in:"+temp.get("expires_in"));
System.out.println("access errcode:"+temp.get("errcode"));
expires_in = (Integer) temp.get("expires_in");
gson会将expires_in的值7200,转成7200.0,在
expires_in = (Integer) temp.get("expires_in");
这一句就出错了。打印日志我也贴一下。 json:{"access_token":"W1lqLK3ED-CSAAAqsj8L7R0LJeysKsudWO42CJvUuIEf5wW971XKviqc3_NSnNxgzqR-b2qzPnfk7C_C3jeUeXCBIIaYe_-h_60hlcQVcwcMSRdAIADJI","expires_in":7200}
access expires_in:7200.0
所以在部署时不要用gson,我用了fastjson。
现在可以测试页面可以调jssdk了。但是我拷贝一份测试页面,创建菜单去调却报invalid signature签名错误。另外,感谢 孤独的3 的解答。
解决方案3:找到原因了。不能用gson jar包。在AccessToken.java文件,如下代码
Map temp = JsonUtils.decode(jsonStr, Map.class);
access_token = (String) temp.get("access_token");
System.out.println("access expires_in:"+temp.get("expires_in"));
System.out.println("access errcode:"+temp.get("errcode"));
expires_in = (Integer) temp.get("expires_in");
gson会将expires_in的值7200,转成7200.0,在
expires_in = (Integer) temp.get("expires_in");
这一句就出错了。打印日志我也贴一下。 json:{"access_token":"W1lqLK3ED-CSAAAqsj8L7R0LJeysKsudWO42CJvUuIEf5wW971XKviqc3_NSnNxgzqR-b2qzPnfk7C_C3jeUeXCBIIaYe_-h_60hlcQVcwcMSRdAIADJI","expires_in":7200}
access expires_in:7200.0
所以在部署时不要用gson,我用了fastjson。
现在可以测试页面可以调jssdk了。但是我拷贝一份测试页面,创建菜单去调却报invalid signature签名错误。另外,感谢 孤独的3 的解答。
解决方案4: 注意:1. 确认使用的是仓库里最新的代码
http://git.oschina.net/jfinal/jfinal-weixin/blob/master/webapp/jsp/js_sdk.jsp
2. 注意主配置文件中得有:这2个配置
String appId = PropKit.get("appId");
String appSecret = PropKit.get("appSecret");
解决方案5:引用来自“孤独的3”的评论
直接拿我们的test.jsp先跑一遍,注意下里面的
js_sdk的路径
解决方案6:引用来自“孤独的3”的评论
直接拿我们的test.jsp先跑一遍,注意下里面的
js_sdk的路径
解决方案7:直接拿我们的test.jsp先跑一遍,注意下里面的js_sdk的路径
解决方案8:wx.config({
// 这里改成true
debug: false
})
<%--
// 这块的上面的注释去掉
wx.error(function (res) {
alert(res.errMsg);
});
--%>
再就是js的引入顺序问题:具体看看WIKI http://git.oschina.net/jfinal/jfinal-weixin/wikis/%E4%BD%BF%E7%94%A8JS_SDK.jsp%E6%9B%B4%E5%8A%A0%E6%96%B9%E4%BE%BF%E7%9A%84%E5%BC%80%E5%8F%91%E5%BE%AE%E4%BF%A1JSSDK%E6%8E%A5%E5%8F%A3
解决方案9:引用来自“孤独的3”的评论
js_sdk是有个域名限制的,需要到微信后台填写添加一个js域名白名单!
调试把js_sdk.jsp里面config debug(改成true),还有alert处的jsp注释打开即可
js_sdk.jsp返回式已js返回的,所以直接用script标签引用就好了,里面有当前URL的获取参与加密,不明白可以查看下微信官方文档!
解决方案10:
js_sdk是有个域名限制的,需要到微信后台填写添加一个js域名白名单!
调试把js_sdk.jsp里面config debug(改成true),还有alert处的jsp注释打开即可
js_sdk.jsp返回式已js返回的,所以直接用script标签引用就好了,里面有当前URL的获取参与加密,不明白可以查看下微信官方文档!
以上介绍了“jfinal weixin使用jssdk报permission denied”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1378163.html