微信分享非安全域名链接导致分享失败

最近微信开发遇到个问题,有个需要授权的页面分享失败了,之前一直都是好好的,完整链接类似这种:

 

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect 

上网查了才知道微信近期做了调整,如下

详细参考:http://mp.weixin.qq.com/s/hAdtKl2i4ilyo9HxT1kXyw

 

我的解决思路是:

单独做一个转发页面,通过转发链接进入这个转发页面后,再直接跳转到拼接好的授权页面。直接上代码:

这是分享的代码:

 

 
  1. var link = "http://"+window.location.host+"/pwxweb/share.html?shareurl="+encodeURIComponent(url)+"&appId="+appId+"&state="+state;

  2. wx.onMenuShareAppMessage({// 分享给朋友

  3. title : shtitle, // 分享标题

  4. desc : shdesc, // 分享描述

  5. link : link, // 分享链接

  6. imgUrl : urlImg, // 分享图标

  7. type : '', // 分享类型,music、video或link,不填默认为link

  8. dataUrl : '', // 如果type是music或video,则要提供数据链接,默认为空

  9. success : function() {

  10. // 用户确认分享后执行的回调函数

  11. },

  12. cancel : function() {

  13. // 用户取消分享后执行的回调函数

  14. }

  15. });

 

这是单独的分享页面:

 

[html] view plain copy

  1. <code class="language-javascript"><!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.   
  6. <title></title>  
  7. </head>  
  8. <script>  
  9. function getQueStr(url, ref) {//取获参数值  
  10.     var str = url.substr(url.indexOf('?') + 1);  
  11.     if (str.indexOf('&') != -1) {  
  12.         var arr = str.split('&');  
  13.         for (i in arr) {  
  14.             if (arr[i].split('=')[0] == ref)  
  15.                 return arr[i].split('=')[1];  
  16.         }  
  17.     }  
  18.     else {  
  19.         return url.substr(url.indexOf('=') + 1)  
  20.     }  
  21. }  
  22.   
  23. function delQueStr(url, ref) {//删除参数值  
  24.     var str = "";  
  25.     if (url.indexOf('?') != -1)  
  26.         str = url.substr(url.indexOf('?') + 1);  
  27.     else  
  28.         return url;  
  29.     var arr = "";  
  30.     var returnurl = "";  
  31.     var setparam = "";  
  32.     if (str.indexOf('&') != -1) {  
  33.         arr = str.split('&');  
  34.         for (i in arr) {  
  35.             if (arr[i].split('=')[0] != ref) {  
  36.                 returnurl = returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";  
  37.             }  
  38.         }  
  39.         return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);  
  40.     }  
  41.     else {  
  42.         arr = str.split('=');  
  43.         if (arr[0] == ref)  
  44.             return url.substr(0, url.indexOf('?'));  
  45.         else  
  46.             return url;  
  47.     }  
  48. }  
  49. //引导用户授权  
  50. (function(){  
  51.     var url = window.location.href  
  52.     //重复转发去除之前url里的code和state参数  
  53.     var redirect_uri = delQueStr(delQueStr(decodeURIComponent(getQueStr(url, "shareurl")),"code"), "state");  
  54.     var appid = getQueStr(url, "appId");  
  55.     var state = getQueStr(url, "state");  
  56.     url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="  
  57.             +appid+"&redirect_uri="+encodeURIComponent(redirect_uri)+"&response_type=code&scope=snsapi_userinfo"+"&state="+state+"#wechat_redirect";  
  58.     window.location.href = url;  
  59. })();  
  60.   
  61. </script>  
  62. <body>  
  63. </body>  
  64. </html></code>  

 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值