企业微信对接企业自建应用(小程序、h5登陆认证)
企业微信与自建h5应用和小程序对接
1.企业微信对接h5
网页授权登登陆链接
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect
参数说明:
参数必须说明
appid是企业的CorpID
redirect_uri是授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type是返回类型,此时固定为:code
scope是应用授权作用域。
snsapi_base
:静默授权,可获取成员的的基础信息(UserId与DeviceId);
snsapi_userinfo
:静默授权,可获取成员的详细信息,但不包含手机、邮箱;
snsapi_privateinfo
:手动授权,可获取成员的详细信息,包含手机、邮箱注意:企业自建应用可以根据userid获取成员详情,无需使用snsapi_userinfo和snsapi_privateinfo两种scope。更多说明见scope
agentid否企业应用的id。当scope是snsapi_userinfo或snsapi_privateinfo时,该参数必填注意redirect_uri的域名必须与该应用的可信域名一致。
state否重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
#wechat_redirect是终端使用此参数判断是否需要带上身份信息
员工点击后,页面将跳转至redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。
获取access_token
获取access_token是调用企业微信API接口的第一步,相当于创建了一个登陆凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份。因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token。
请求方式: GET(HTTPS)请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT
注:此处标注大写的单词ID和SECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的标注,不再说明。
参数说明:
参数必须说明
corpid是企业ID,获取方式参考:术语说明-corpid
corpsecret是应用的凭证密钥,获取方式参考:术语说明-secret
权限说明:每个应用有独立的secret,所以每个应用的access_token应该分开来获取返回结果:
{
"errcode": 0,
"errmsg": "ok",
"access_token": "accesstoken000001",
"expires_in": 7200
}
参数说明:
参数说明
errcode出错返回码,为0表示成功,非0表示调用失败
errmsg返回码提示语
access_token获取到的凭证,最长为512字节
expires_in凭证的有效时间(秒)
注意事项:
a.
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
b.
access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。由于企业微信每个应用的access_token是彼此独立的,所以进行缓存时需要区分应用来进行存储。
c.
access_token至少保留512字节的存储空间。
d.
企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。
根据code获取成员信息
请求方式:GET(HTTPS)请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:
参数必须说明
access_token是调用接口凭证
code是通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
权限说明:
跳转的域名须完全匹配access_token对应应用的可信域名,否则会返回50001错误。
2.企业微信对接自建小程序应用(非第三方小程序)
调用接口 wx.qy.login() 获取企业微信派发的临时登录凭证(code)
企业微信允许多个企业关联同一个小程序,不过企业在开发过程中有需要特别注意的地方。
小程序在调用wx.qy.login之后,发送code到开发者服务器,开发者服务器使用code调用jscode2session接口,因为该小程序被多个企业关联,此时并不知道是哪个企业的用户在登录。此时,可使用任意一个企业中关联本小程序的应用的secret获取access_token,先调用jscode2session获得准确的corpid,再据此corpid重新进行一次登录流程即可。