美文网首页
微信网页开发之获取用户信息(四)

微信网页开发之获取用户信息(四)

作者: Tme_2439 | 来源:发表于2019-08-13 18:11 被阅读0次
吐槽一波:真鸡儿坑,花了老子大半天时间。

获取信息的官方文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

准备工作:

说明: 个人订阅号无法使用这个功能,我用的微信提供的测试账号来完成的。

1、在测试账号页面添加测试用户(未添加则无法调用测试的JS_SDK功能),如下图:

添加测试用户
2、在'体验接口权限表'下添加授权回调域名(域名填写必须与redirect_uri一致, 否则会提示10003错误码)
image.png

进入开发1:

说明:获取微信用户信息分为3个步骤,后面两个需要在服务器端进行。(坑~)

1、第一步先获取 code,需要用到的参数如下:(写一个按钮click触发getUserInfo方法):
需要用到的参数:
appId (保存在后端,同wx.config{...}一起返回的)
redirect_uri 用户点允许后要跳转的路由全称url,微信服务器会再度重定向到redirect_uri并携带openid给你,这样就获取到了(vue项目使用history模式,不能使用hash模式,因为这个url后边跟了#,微信服务器无法解析两个#)

getUserInfo() {
  let appId = localStorage.getItem('appId')  // 可以保存在后端,同wx.config{...}一起返回的
  let url = `https://open.weixin.qq.com/connect/oauth2/authorize?  appid=${appId}&redirect_uri=${encodeURI('http://wx.zhulijun.club/getUserInfo')}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
  window.location.href = url  // 定义一个重定向到该url,微信服务器会再度重定向到redirect_uri并携带code给你
},

进入开发2:

说明:获取到code后,在后端新建一个接口用于获取用户信息。(注意:不能在前端获取到用户信息!!!

后端开发过程:

1、获取用户信息前还需要获取access_tokenopenid
需要用到的参数:

code 前端传递过来的
appId 公众号的appId(如果是测试账号记得使用测试账号的appId)
secret 公众号的secret(如果是测试账号记得使用测试账号的secret)

请求地址:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${secret}&code=${code}&grant_type=authorization_code

2、获取到access_tokenopenid后就可以愉快的获取到用户信息了,开森!!!
需要用到的参数:
access_token 上个步骤获取到的(不同于获取微信签名里面的access_token
openid 上个步骤获取到的

请求地址:

https://api.weixin.qq.com/sns/userinfo?access_token=${token}&openid=${openid}&lang=zh_CN
完整代码:
router.get('/getUserInfo', (req, res) => {
    let code = req.query.code // 前端传递的code
    let appId = wxConfig.appID
    let secret = wxConfig.appsecret
    let url1 = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${secret}&code=${code}&grant_type=authorization_code`
    https.get(url1, (response) => {
        let result = ''
        response.on('data', (chunk) => {
            result += chunk
        })
        response.on('end', () => {
            console.log('一、' + result)
            result = JSON.parse(result)  巨坑:node中http和http返回的数据都是字符串,需要JSON.parse转换为对象
            let token = result["access_token"]
            let openid = result["openid"]
            let url2 = `https://api.weixin.qq.com/sns/userinfo?access_token=${token}&openid=${openid}&lang=zh_CN`
            https.get(url2, (response) => {
                let result = ''
                response.on('data', (chunk) => {
                    result += chunk
                })
                response.on('end', () => {
                    console.log('二、' + result)
                    res.send(result)
                })
            })
        })
    })
})

总结:

虽然过程很痛苦,但弄出来的还是很开森滴~~~

相关文章

  • 微信内置浏览器web开发(登陆 + 支付)

    微信开发技术文档 网页授权——登陆 获取用户信息,需要获取来自微信的授权access_token。获取access...

  • 微信网页开发之获取用户信息(四)

    吐槽一波:真鸡儿坑,花了老子大半天时间。 获取信息的官方文档地址:https://mp.weixin.qq.com...

  • 微信公众号开发(二)

    微信公众号开发文档 微信网页授权 微信客户端中访问第三方网页,可通过 微信网页授权机制 来获取用户信息。授权机制:...

  • 获取是否关注公众号

    获取微信用户的信息(普通版) 获取微信用户的信息(包含是否关注公众号信息) 参考链接:微信网页授权登录获取包含是否...

  • 浅析微信支付:微信公众号网页授权

    本文是【浅析微信支付】系列文章的第四篇,主要讲解微信支付前如何获取获取网页授权及用户信息获取。 浅析微信支付系列已...

  • 微信授权总结

    微信网页授权 开发步骤: (1)//$code有值说明用户同意授权,获取用户信息后进入列表页,$code没有值说明...

  • 微信小程序开发 获取openid

    微信小程序开发之获取openid及用户信息 1. 获取openid 1.1 获取code 调用接口获取登录凭证(c...

  • django: 微信网页授权

    微信网页授权基础知识 网页授权的最终目的就是获取微信的用户信息,微信的网页授权方式有两种 snsapi_base:...

  • Java web微信请求拦截器(微信公众号开发)

    Java web微信请求拦截器(微信公众号开发),获取微信用户信息。

  • 微信网页授权

    微信通过网页授权可以在网页内获取微信用户信息,进而在网页内实现相关的业务逻辑。 微信网页授权的scope有两种,一...

网友评论

      本文标题:微信网页开发之获取用户信息(四)

      本文链接:https://www.haomeiwen.com/subject/wikbjctx.html