微信开发文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
-
点击按钮,跳转到微信授权页面,会出现一个二维码。
//拉取授权页面 let APPID = '网页应用的appid' let REDIRECT_URI = encodeURIComponent('授权后跳转回的页面') location.href=`https://open.weixin.qq.com/connect/qrconnect?appid=${APPID }&redirect_uri=${REDIRECT_URI }&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect `
appid:是应用的唯一标识。
redirect_uri:授权登录后跳转回的页面,需要在微信开放平台配置授权回调域,用户使用微信帐号登录后,只能回调至该域名下的页面。要使用encodeURIComponent()进行编码,不能使用encodeURI(),因为如果是Vue项目并且使用的是hash模式的话,#后面的内容会丢失,导致报错:scope错误或没有scope权限。
response_type:填code即可。
scope:应用授权作用域,网页应用目前仅填写snsapi_login即可。
state:非必填,用于保持请求和回调的状态,授权请求后原样带回给第三方。 -
用户扫码,会弹出授权弹框,确认授权后,微信会自动跳转到回调地址redirect_uri,并通过
?
的形式拼接相关回调参数。
-
提取出code传给后端,后端接口会返回网页授权access_token和其他一些用户信息。
//获取url中的search let search = location.search.slice(1); let arr = search.split("&"); let result = {}; arr.forEach(function(item){ let itemArr = item.split('='); result[itemArr[0]]=itemArr[1]; }) if(result.code){ //调用后端接口 getUserInfo(); }