微信授权-获取微信用户个人信息

官方文档与插件

微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
插件地址https://github.com/HADB/GetWeixinCode

为什么使用此插件

主要是公司使用的域名非常多,微信后台开放的3个域名完全不够用~

如何使用此插件

使用方法

  • 部署get-weixin-code.html至你的微信授权回调域名的目录下
  • 使用方式类似于直接通过微信回调的方式,只是将回调地址改成了get-weixin-code.html所在的地址,另外省去了response_type参数(因为它只能为code)以及#wechat_redirect(它是固定的),它们会在get-weixin-code.html里面自己加上
  • get-weixin-code.html页面从微信那里拿到code之后会重新跳转回redirect_uri里面填写的url,并且在url后面带上code和state

详细示例

  • 前往微信公众平台->接口权限->网页授权获取用户基本信息->修改,填写授权回调页面域名,
  • 例如 www.abc.comwww.abc.com 域名下部署 get-weixin-code.html
  • 不一定是根目录,例如:http://www.abc.com/xxx/get-weixin-code.html
  • 假设你的 http://www.xyz.com/hello-world.html 这个页面需要获取微信授权
  • 那么你应该使用以下地址来获取授权:http://www.abc.com/xxx/get-weixin-code.html? appid=XXXX&scope=snsapi_base&state=helloworld&redirect_uri=http%3A%2F%2Fwww.xyz.com%2Fhello-world.html
  • 这样最终就会跳转到这样一个地址:http://www.xyz.com/hello-world.html?code=XXXXXXXXXXXXXXXXX&state=hello-world,从而你就拿到了授权code以及自定义的state参数了

通过code获取微信用户个人信息

  • [前端]用户同意授权后
  • [前端]使用如上方法获取到code参数值后,ajax请求该接口 /api/v1/auth/auth/login
  • [后端]接收到用户的code参数后,将去调用微信接口,获取到access_token和openid等信息
    {
    "access_token":"ACCESS_TOKEN",
    "expires_in":7200,
    "refresh_token":"REFRESH_TOKEN",
    "openid":"OPENID",
    "scope":"SCOPE" 
    }
  • [后端]使用access_token和用户openid去调用接口,拉取用户信息
    {   
    "openid": "OPENID",
    "nickname": NICKNAME,
    "sex": 1,
    "province":"PROVINCE",
    "city":"CITY",
    "country":"COUNTRY",
    "headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlifHe/46",
    "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
    }

发表新评论