微信公众号页面授权回调自定义参数问题
我们知道微信页面回调接口,获得用户信息后,回调地址:
redirect_uri:授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理。
授权后跳转回页面:
redirect_uri&code=code&state=yourstate(maxlength=128byte)
问题:如果redirect_uri中包括带参数的页面链接,就会造成回到地址有两个 ? 。
而state最大只有128字节。
处理方法:
把 redirect_uri 中含有url的参数进行base64编码,处理页进行解码!
使用base64.js 库
github、gitee都可下载
业务Page(获取Openid)
<!-- 引入Base64 js库文件 -->
<script src="/res/yssss32d/page/buss/js/base64.js"></script>
...
<script>
let aurl = BASE64.urlsafe_encode(window.location.href).trim();
window.location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid={{.vwxconf.appid}}&redirect_uri='+escape('http://xxx.xxxxxxx.com/p/yssss32d/guoxx/gc0000001?aurl='+aurl)+'&response_type=code&scope=snsapi_base&state=yxydev.com#wechat_redirect';
</script>
回调页:
http://xxx.xxxxxxx.com/p/yssss32d/guoxx/gc0000001
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>yxydev.com·{{DOMAIN}}</title>
<script src="/res/yssss32d/page/buss/js/base64.js"></script>
</head>
<body style="font-size:16pt;">
{{if and .code .aurl}} <!-- 有效云平台系统解析的参数 服务端引用 -->
<!-- 获取 access_token 和 用户的 OpenID -->
{{$surl1:= FUNC_PLUS "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" .vwxconf.appid "&secret=" .vwxconf.appsecret "&code=" .code "&grant_type=authorization_code"}}
{{$r1:= FUNC_STR2MAP (FUNC_HTTPGET $surl1)}}
{{if $r1.access_token}}
{{$sr1:=SESSIONSET "vuwid_ss" $r1.openid}}
{{$ssql:=FUNC_PLUS "call proc_wx_update_user(1,'" .vwxconf.appid "','" $r1.openid "','',0,'')" }}
{{$dbr1:=FUNC_SQLEXEC "app-conn-code" $ssql}}
<script>
//console.log(">>>>>>> ",BASE64.urlsafe_decode('{{.aurl}}')+'&vuwid2={{$r1.openid}}');
window.location.href=BASE64.urlsafe_decode('{{.aurl}}')+'&vuwid2={{$r1.openid}}';
</script>
{{/*$return_url:=FUNC_PLUS .aurl .state "&vuwid2=" $r1.openid}}
{{HTTP_REDIRECT 302 $return_url*/}}
{{else}}
<!-- 异常信息提示信息 -->
{{end}}
{{else}}
<!-- 异常信息提示信息 -->
{{end}}
</body>
</html>
版权声明:本文为woniu149113662原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。