起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3004|回复: 6

[结贴] 请原谅我深夜的吐槽,微信code被舍弃了!

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
发表于 2017-3-10 00:40:51 | 显示全部楼层 |阅读模式
搞了一天,微信的code始终为空,是非常奇怪,上图吧。
第一步,微信的认证,是带上code的!
1.png

第二步,跳转uri,也有code。
2.png

第三步,进入服务器,还是有code。
3.png

第四步,参考文档说明,对tomcat的root的index.html进行设置!
4.png
第五步,加入V的版本时候code消失了!
5.png

直接导致开发的index.w页面获取不到code!

这个应该是加入版本时候的逻辑处理导致code的消失,要怎么处理?获取不到code就无法使用access——token,也就没有了userinfo,而外卖案例是可以获取到的!!!!获取code都是用外卖的代码,都是在index页面获取,请帮忙分析,解决!非常感谢!




发表于 2017-3-10 10:33:56 | 显示全部楼层
公众号中是否设置了授权目录?
http://docs.wex5.com/wex5-app-question-list-2061/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-10 10:47:06 | 显示全部楼层
liangyongfei 发表于 2017-3-10 10:33
公众号中是否设置了授权目录?
http://docs.wex5.com/wex5-app-question-list-2061/

之前配置的时候就是参考这个文档,this.wxApi这个是设置过的,不需要做支付,只是需要获取用户的信息!
回复 支持 反对

使用道具 举报

发表于 2017-3-10 13:31:21 | 显示全部楼层
ufo1982ufo 发表于 2017-3-10 10:47
之前配置的时候就是参考这个文档,this.wxApi这个是设置过的,不需要做支付,只是需要获取用户的信息! ...

只有微信公众号中配置的URL,才能获取用户信息,在微信中方式的路径格式参考
http://docs.wex5.com/wex5-app-question-list-2063

另外看下视频:http://www.wex5.com/1-wex5#03
第十一讲 开发微信公众号

直接使用你的域名打开的页面!在微信中是无法获取code 的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-10 17:08:44 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-3-10 17:44 编辑
liangyongfei 发表于 2017-3-10 13:31
只有微信公众号中配置的URL,才能获取用户信息,在微信中方式的路径格式参考
http://docs.wex5.com/wex5- ...

经过无数次的实验,的却是由于那个“window.location="/mfxxl";”引起的,之所以起步的外卖可以获取到code,是因为它的baas里的WxMpServiceInstance.java是这样写的!
  1.                 WxMenuButton takeout = new WxMenuButton();
  2.                 takeout.setName("外卖案例");
  3.                 takeout.setType(WxConsts.BUTTON_VIEW);
  4.                 takeout.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + this.getWxMpConfigStorage().getAppId() + "&redirect_uri=http%3A%2F%2Fx5.justep.com%2Fx5%2FUI2%2Ftakeout%2Findex.w&"
  5.                                 + "response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect");
  6.                 System.out.println(takeout.getUrl());
  7.                 x5Meuns.add(takeout);
复制代码

一种方法:
最早我的菜单是这样的(被Tomcat的“window.location”重定向后就会遗失code):
  1. https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXXX&redirect_uri=http%3A%2F%2FXXXXXXX.ap.ngrok.io%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
复制代码
后来我改成这样(加入“/mfxxl”也就是起步外卖的道理,我同样可以获取到code):
  1. https://open.weixin.qq.com/connect/oauth2/authorize?appid=<span style="line-height: 19.0909px;">XXXXXXXX</span>&redirect_uri=http%3A%2F%2F<span style="line-height: 19.0909px;">XXXXXXXX</span>.ap.ngrok.io%2Fmfxxl%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
复制代码
至此问题基本解决了,但是Tomcat跑了多个应用的话就过不了ROOT。一些设置也会无效了!


还有一种办法是修改Tomcat的server.xml,加入如下代码,同样可以获取到code(曾经尝试修改Catalina结果还是不行,同样获取不到code):
  1. <Context path="" docBase="D:\www\apache-tomcat\webapps\mfxxl" debug="0"/>
复制代码


最后一种方法,在Tomcat的ROOT里的index.html重定向上修改,将微信的code获取后重新传给重定向的页面(加入“var url = location.search; //获取url中"?"符后的字串”):
  1. <!DOCTYPE HTML
  2.   PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4.         <head>
  5.                 <script type="text/javascript">
  6.                         var url = location.search; //获取url中"?"符后的字串
  7.                         window.location="/mfxxl"+url;
  8.                 </script>
  9.         </head>
  10. </html>
复制代码
到此为止,code可以正常获取,多引用可以正常跑起来,网站小图片等都全部解决了!
分享自己的做法给大家 可以根据自己的情况修改,以免浪费很多的时间。
谢谢梁老师的指导。可以结贴了!
微信截图_20170310165558.png
回复 支持 反对

使用道具 举报

17

主题

80

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
QQ
发表于 2017-5-9 17:12:21 | 显示全部楼层
学习了
回复

使用道具 举报

10

主题

48

帖子

108

积分

初级会员

Rank: 2

积分
108
QQ
发表于 2017-6-26 00:46:09 | 显示全部楼层
学习了!!感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-20 21:29 , Processed in 0.060366 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表