pc端网页实现微信扫码登录

微信开发文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
pc端网页实现微信扫码登录_第1张图片
pc端网页实现微信扫码登录_第2张图片
pc端网页实现微信扫码登录_第3张图片

  1. 点击按钮,跳转到微信授权页面,会出现一个二维码。
    pc端网页实现微信扫码登录_第4张图片
    pc端网页实现微信扫码登录_第5张图片

    //拉取授权页面
    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:非必填,用于保持请求和回调的状态,授权请求后原样带回给第三方。

  2. 用户扫码,会弹出授权弹框,确认授权后,微信会自动跳转到回调地址redirect_uri,并通过?的形式拼接相关回调参数。
    pc端网页实现微信扫码登录_第6张图片

  3. 提取出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();
    }
    

你可能感兴趣的:(移动端,H5)