微信网页静默授权获取用户信息——koa2.x

28 篇文章 0 订阅
26 篇文章 0 订阅

1、获取code
2、通过code获取用户openid
3、拿着用户的openid换取用户信息

1、构造请求url如下(只能在公众号内打开):

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect
scope=snsapi_base 不会弹出授权框,为静默授权,
scope=snsapi_userinfo 会弹出授权框

2、在公众号内打开这个链接后会自动重定向到redirect_uri后的地址,并带上一个code,我们就可以通过截取url中的code获取他的值,值得注意的是,code有效期只有5分钟,并且只有第一次有效

http://israel.duapp.com?code=02a9bed29b2185a9f0ed3a48fe56e700&state=1

3、拿code换取用户的openid并获取用户的信息

//获取用户openid
//**这个appid一定要和第一步中的appid一样**
 
exports.getOpenid = function(appid,secret,code){
    return new Promise((resolve, reject)=>{
        let queryParams = {
            'grant_type':'authorization_code',
            'appid': appid,
            'secret': secret,
            'code':code
        }
        let options = {
            method: 'GET',
            url: 'https://api.weixin.qq.com/sns/oauth2/access_token?'+qs.stringify(queryParams)
        };
        request(options, function (err, res, body) {

            if (res) {
                resolve(JSON.parse(body));
            } else {
                reject(err);
            }
        });
    })
}

返回参数:

{
    "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg",
    "expires_in": 7200,
    "refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw",
    "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
    "scope": "snsapi_base"
}

4、获取用户的信息

//获取用户信息
//access_token为公众号的access_token,是拿公众号的appid和appsecre获取的

exports.getuserinfo = function(access_token,openid){
    return new Promise((resolve, reject)=>{
        let queryParams = {
            'access_token': access_token,
            'openid': openid
        }
        let options = {
            method: 'GET',
            url: 'https://api.weixin.qq.com/cgi-bin/user/info?'+qs.stringify(queryParams)
        };
        request(options, function (err, res, body) {

            if (res) {
                resolve(JSON.parse(body));
            } else {
                reject(err);
            }
        });
    })
}

返回结果:

 {
    "subscribe": 1,
    "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
    "nickname": "小小小石头",
    "sex": 1,
    "language": "zh_CN",
    "city": "成都",
    "province": "四川",
    "country": "中国",
    "headimgurl": "http://xxx",
    "subscribe_time": 1386160805
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值