企业微信的提供了OAuth的授权登录方式,可以让从企业微信或微信终端打开的网页获取联系人的身份信息,从而免去登录的环节。
企业应用中的URL链接(包括自定义菜单或者消息中的链接),均可通过OAuth2.0验证接口来获取联系人的UserId身份信息。
官方截图来一波,更加清晰
1、前端构造网页授权链接,来获取code参数(用于后面作为参数,获取联系人userId)
授权链接的拼接规范:
open.weixin.qq.com/connect/oau…
参数说明:
联系人(内部员工与客户联系人)点击后,页面将跳转至redirect_url?code=CODE&state=STATE,企业可根据code参数获取到联系人的userId。
返回的页面跳转地址:
2、获取access_token
注意:为了安全考虑,开发者请勿将access_token返回给前端,需要开发者保存在后台,所有访问企业微信api的请求由后台发起!!!
获取access_token是调用企业微信API接口的第一步,相当于创建了一个登录凭证,其他的业务API接口,都需要依赖与access_token(需明确access_token的颁发来源,使用正确的)来鉴权调用者身份。
请求方式:GET(HTTPS)
请求地址:qyapi.weixin.qq.com/cgi-bin/get…
参数:
权限说明:每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用是的access_token应该分开来获取
注意事项:
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁的调用getten接口,否则会受到频率拦截)。当access_token失效或过期,要重新获取。
access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。
企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。
3、获取访问者身份(即咱们需要的数据)
注意:得到code的外部用户必须存在于咱们的企业微信联系人中,否则返回结果(情况b)中没有external_userid
请求方式:GET(HTTPS)
请求地址:qyapi.weixin.qq.com/cgi-bin/use…
返回结果:
a)当用户为企业时(无论是否在应用可见范围内)返回示例如下:
b)非企业成员时,返回示例如下:
出错示例:
{"errcode": 40029,"errmsg": "invalid code"}