同福

使用微信企业号开发用户网页授权(获取用户信息)功能

介绍

介绍

福哥今天给大家分享一下如何在微信企业号里实现用户网页授权(获取用户信息)功能,和微信公众号不一样的地方是,企业号是面向企业的,也就是说获取的用户信息其实就是微信企业号里的成员信息,说白了就是企业员工信息

教程

登录

登录微信企业号后台,进入应用过来 > 具体应用页面,我们仅使用网页授权及JS-SDK接口来完成获取用户信息功能

点击下面的“已启用”可以设置授权域名,只有授权的域名才可以用于回调URL
12b00a53b312d2bb.jpg

应用AgentID/Secret

每个应用都会有一个AgentID和Secret,这个对应微信公众号的AppID和AppSecret

f7c3dc72d57d4eb5.jpg

企业ID

进入我的企业 > 企业信息页面,在最下面可以看到企业ID

26b1c768ce41a355.jpg

开发网页授权

网页授权基于OAuth2认证模式,按照OAuth2认证模式对接即可

获取code

拼凑获取code的请求URL,重定向到这个请求URL

  • 企业ID:微信企业号的企业ID

  • RedirectUri:回调URL,必须是基于网页授权域名的URL

https://open.weixin.qq.com/connect/oauth2/authorize?appid=[企业ID]&redirect_uri=URLEncode([RedirectUri])&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

通过微信服务器验证之后返回到指定回调URL,回调URL会携带code参数

  • Code:微信服务器分配的code参数

[RedirectUri]?code=[Code]&state=STATE

获取access_token

使用企业ID和应用Secret去换取access_token临时令牌

  • 企业ID:微信企业号的企业ID

  • 应用Secret:微信企业号应用的Secret

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=[企业ID]&corpsecret=[应用Secret]

返回的JSON数据里包括access_token,access_token就是临时令牌,微信企业号的access_token不能刷新的,失效了需要重新获取

{
  "errcode":0,
  "errmsg":"ok",
  "access_token":"HSTj7Z_79rwzdkFJ-eI5SimoBA2X9a6H0SmQBAmxo2nmfM_nJNCyG46DrPSEb1donKzegXv9Ooe7AgQWwC1FAyx57NeMfw2d627U33TUYiWgBekqbCLtBd-T8xGF03Wn6a90qTNQCO5NHsHZ2eG9AmYoai45YwvibcV5mwQbe6_AtQam6R0-tPgsxW9EohRR-DYB6kAXubdFgfCzOXQhfA",
  "expires_in":7200
}

获取UserID

在前一步我们没有传入code参数,当然也就拿不到openid了,要拿用户的openid需要提供access_token和code两个信息

AccessToken:临时令牌

Code:微信服务器分配的code参数

https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=[AccessToken]&code=[Code]

返回的JSON数据包括OpenId和DeviceId,OpenId用于获取用户信息

注意:

如果授权用户是企业微信的成员则返回的JSON数据只有UserId,否则返回的JSON数据只有OpenId,也就是说UserId和OpenId只会出现其中一个。
微信企业号不能对OpenId直接获取信息,用户需要先关注企业号,成为企业号成员之后通过UserId才可以获取信息。
还有微信企业号通过UserId获取信息需要被操作UserId的用户在应用的可见范围之内才可以获取信息。

获取用户信息

拿到UserId和access_token后就可以获取授权我们的用户的信息了

  • AccessToken:临时令牌

  • UserID:用户ID(针对当前企业号的)

https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=[AccessToken]&userid=[UserID]

获得的信息如下

{
  "errcode":0,
  "errmsg":"ok",
  "userid":"tongfunet",
  "name":"福哥",
  "department":[88],
  "position":"",
  "mobile":"139****8888",
  "gender":"1",
  "email":"tongfu@tongfu.net",
  "avatar":"http://wework.qpic.cn/wwhead/duc2TvpEgSQO4BpE0WZSZ8Dl243suofE1XXDpQtRJzyGmnVPaH9zgUAicevJZQGJgHvwhJRXPRyCxE/0",
  "status":1,
  "isleader":0,
  "extattr":{
    "attrs":[
    ]
  },
  "english_name":"",
  "telephone":"",
  "enable":1,
  "hide_mobile":0,
  "order":[0],
  "external_profile":{
    "external_attr":[],
    "external_corp_name":""
  },
  "main_department":88,
  "qr_code":"https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vc4a4332f7e3557a1c",
  "alias":"",
  "is_leader_in_dept":[0],
  "address":"",
  "thumb_avatar":"http://wework.qpic.cn/wwhead/duc2TvpEgSQO4BpE0WCVC8Dl8iabeqE1XXDpQtRJzyGmnVPaH9tyUAicevJZQGJgHvwhJRXPRyCxE/100"
}