H5/web app/第三方网页 微信受权登录 调研

微信登录:

用户可运用微信帐号疾速登录你的网站,
一致用户运用微信登录你的差别运用和民众帐号,会对应一致个UnionID,以便举行差别营业间的帐号一致

微信受权登录可分为:

  1. 扫码登录(平常用于 PC 网页)- 微信开放平台
  2. 跳转 APP 受权登录(第三方 APP 运用)- 微信开放平台
  3. 微信内置浏览器内登录(平常用于挪动端网站,民众号登录)- 微信民众平台
  4. 微信小顺序内微信登录(小顺序内部)- 微信民众平台

公司项目登录场景形貌:
只限于在微信客户端翻开的网页运用,在微信音讯列表直接给挚友发送一个网页的URL,用户收到直接点击URL直接翻开页面

结论:云学院为挪动端网站,运用第三种登录体式格局,微信网页受权

网页受权的两种体式格局:

1.寂静受权:

用户感知的就是直接进入了回调页(往往是营业页面)

req.scope = @”snsapi_base”

只能猎取access_token和openID

2.非寂静受权:

须要用户手动赞同

req.scope = @”snsapi_userinfo”

猎取更细致的用户材料,比方头像、昵称、性别等

结论:运用非寂静受权

完成步骤:

1、上岸【杏树林民众号】后能够查看到【appId】和【appsecret】信息

2、民众平台官网中的“开辟 – 接口权限 – 网页效劳 – 网页帐号 – 网页受权猎取用户基本信息”的设置选项中,修正受权回调域名

《H5/web app/第三方网页 微信受权登录 调研》

3、指导用户进入受权页面赞同受权,此时会挪用微信api猎取code

4、 受权经由过程后会带上code参数要求回调地点

5、 背景猎取code,再次挪用微信接口调换网页受权access_token和openid

6、经由过程网页受权access_token和openid猎取用户基本信息(如果有unionid还会猎取到unionid参数)

示例代码:

async function wxAuth(req, res) {
    //剖析querystring猎取URL中的code值    
    let code = req.query.code;
    //经由过程拿到的code和appID、app_serect猎取返回信息
    let resObj = await getAccessToken(code);
    //剖析获得access_token和open_id
    let access_token = resObj.access_token;
    let open_id = resObj.openid;
    //经由过程上一步猎取的access_token和open_id猎取userInfo即用户信息
    let userObj = await getUserInfo(access_token, open_id);
    console.log(userObj);
    res.render(path.resolve(__dirname,'userInfo.ejs'), {userObj: userObj});
    // res.send(userObj);}

//经由过程拿到的code和appID、app_serect猎取access_token和open_id
function getAccessToken(code) {
    return new Promise( (resolve, reject) => {
        let getAccessUrl = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=` + `${appID}&secret=${appSerect}&code=${code}&grant_type=authorization_code`;
        https.get(getAccessUrl, (res) => {
            var resText = "";
            res.on('data', (d) => { 
               resText += d; 
            });
            res.on('end', () => {
                var resObj = JSON.parse(resText);
                resolve(resObj);
            });
        }).on('error', (e) => {
            console.error(e);
        });
    });
    }
//经由过程上一步猎取的access_token和open_id猎取userInfo即用户信息
function getUserInfo(access_token, open_id) {
    return new Promise( (resolve, reject) => {
        let getUserUrl = `https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${open_id}&lang=zh_CN`;
        https.get(getUserUrl, (res) => {
            var resText = ""; 
            res.on('data', (d) => {
                resText += d;
            });
            res.on('end', () => {
                var userObj = JSON.parse(resText);
                resolve(userObj);
            });
        }).on('error', (e) => {
            console.error(e);
        });
    })}

demo:

《H5/web app/第三方网页 微信受权登录 调研》

文档:微信网页受权

https://mp.weixin.qq.com/wiki…

参考:
https://juejin.im/post/5b5c42…
https://juejin.im/post/5ad54e…

    原文作者:Rainie
    原文地址: https://segmentfault.com/a/1190000018342304
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞