四时宝库

程序员的知识宝库

javascript微信公众号开发系列(1)

注意:如果你有多个微信公众号一起开发,一定要先绑定微信开放平台,很重要,后期unionid是你管理多个微信公众号的唯一ID.

前面我们讲了,微信怎么配置安全域名与token的验证,今天我们就来看看微信公众号的授权认证。

我们用nodejs开发,框架用thinkjs,

第一步,我们先写用户授权的链接接口:

async getOauthUrlAction() {

let redirect_uri = this.post('redirect_uri'); // 获取授权的url

if (!redirect_uri) {

return this.fail('url错误');

}

let redirect_uri2 = encodeURIComponent(redirect_uri); // 注意:url链接进行处理

const appid = 'wxac3dd7ea8754354d';

const originUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid +

'&redirect_uri=' + redirect_uri2 +

'&response_type=code&scope=snsapi_userinfo&state=true#wechat_redirect';

return this.success(originUrl);

}

前端调用接口,获取code,发送给后端node

第二步,我们再通过code获取授权,用户信息的接口

async loginByWeixinAction() {

const code = this.post("code") //

let _this = this;

let reqUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?';

// 通过code换取网页授权access_token

const options = {

method:'post',

url:reqUrl,

qs:{

appid:"wxac3dd7ea8754354d",

secret:"1c93d24a060e08c4b31d0bededa281ea",

code: code,

grant_type: 'authorization_code'

},

json:true

};

let sessionData = await rp(options);

if (!sessionData.openid) {

return this.fail('登录失败');

}

const access_token = sessionData.access_token;

const openid = sessionData.openid;

const refresh_token = sessionData.refresh_token;

// 拉取用户信息

const options2 = {

method: 'GET',

url: 'https://api.weixin.qq.com/sns/userinfo',

qs: {

access_token: access_token,

openid: openid,

lang: 'zh_CN'

}

};

let userInfo = await rp(options2);

userInfo = JSON.parse(userInfo);

return this.success(userInfo);

}

微信授权,获取用户信息完成

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接