|
楼主 |
发表于 2017-5-19 11:15:24
|
显示全部楼层
担心如果在java里面写死了,现在即使可以用,后期修改和维护会不会成本过高?
然后我试了一下可以通过如下链接进入嵌套在main中的windowcontainer中的w页面:
- http://xxx.com/mfxxl/v-bMRnUf-zh_CN-/mfxxl/index.w#!main//(#!windowContainer4//({"src":"/mfxxl/v-bMRnUf-zh_CN-/mfxxl/infodetail.w","params":{"data":{"info_id":2}}})/!/infodetailcontent)
复制代码
然后url后可以编码得到:
- http%3A%2F%2Fxxx.com%2Fmfxxl%2Fv-bMRnUf-zh_CN-%2Fmfxxl%2Findex.w%23!main%2F%2F(%23!windowContainer4%2F%2F(%7B%22src%22%3A%22%2Fmfxxl%2Fv-bMRnUf-zh_CN-%2Fmfxxl%2Finfodetail.w%22%2C%22params%22%3A%7B%22data%22%3A%7B%22info_id%22%3A2%7D%7D%7D)%2F!%2Finfodetailcontent)
复制代码 用微信授权拼接类似:https://open.weixin.qq.com/connect/oauth2/authorize?appid 后在微信调试里提示“response_type 参数错误”,这个参数就只有一个code可以写吧,一个是微信本身的问题,还有一个是不是返回baas/weixin里响应的问题!但是在微信中直接打开有1/20的几率可以打开,不过每次基本都是等待好几分钟才行,实在不知道后台在做了什么!
我有看了takeout的代码:
- } else if (weixinCode !== "") {
- this._deviceType = "wx";
- // 判断微信环境
- if (justep.Browser.isWeChat) {
- this.wxApi = new navigator.WxApi("wx3fb4a0dd8ea0730c");
- }
- Baas.sendRequest({
- "url" : "/weixin/weixin",
- "action" : "userinfo",
- "async" : false,
- "params" : {
- code : weixinCode
- },
- "success" : function(weixinUser) {
- self._userID = weixinUser.openid;
- // 微信名称**********
- self._userDefaultName = weixinUser.nickname + "(来自微信的用户)";
- self._userDefaultAddress = weixinUser.country + weixinUser.province + weixinUser.city;
- self._userPhotoURL = weixinUser.headimgurl;
- }
- });
复制代码 我又看了UI2/SYSTEM/COMPONENT/JUSTEUP/WIDNOW/INDEX.HTML代码:
- <html>
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
-
- </head>
- <body style="color:gray;margin:0px;text-align:center;padding-top:20%">
- 正在努力加载中......
- <script type='text/javascript'>
- var url = '@indexUrl@';
- var search = window.location.search;
- if (search){
- if (url.indexOf("?") != -1){
- url += "&";
- }else{
- url += "?";
- }
- url += search.substr(1) + window.location.hash;
- }
- window.location.href= url;
- </script>
- </body>
- </html>
复制代码 还有util代码:
- getShareUrl:function(url){
- var currentUrl = new justep.URL(url || location.href);
- if(currentUrl.getHash()){
- var _shareHash = currentUrl.getHash();
- currentUrl.setParam("_shareHash",_shareHash);
- currentUrl.setHash();
- }
- return currentUrl.toString();
- }
复制代码
其实微信中如果用户经过微信授权进来经过index.html后又拼接了search和hash(怪不得我之前微信的code被丢弃!),然后在 Utils.getShareUrl()分享时又把code加入了。
导致用户点击分享后url获取code加之微信环境,就进行Baas.sendRequest,如果在5分钟内微信提示40163提示code被使用,超过5分钟提示40029只能使用一次code。基本问题的原因就是这些引起。
我试了起步公众号的外卖分享出去也是有code,如果新用户点击进入也是会发送Baas.sendRequest。
分享出去的url还有_sharehash,起初用这个判断避免Baas.sendRequest,结果这个实际也被index.html处理掉了。
最后用from参数判断,不去查询微信就没有40029和40163了!
这个在后期能不能把微信环境中这个code给去掉,而且加入微信授权的前缀?
|
|