当前位置:首页 > 高端制造 > 正文

企业微信开发简明教程(一):用户授权

一、前言本教程根据应用场景进行划分,重点阐述企业微信在不同应用场景下的开发思路,同时讲解使用的接口及细节。进行企业微信应用开发之前需要准备:1.可供外网访问服务器用于发布应用,调用官方API及处理官方服务器的回调事件。开发阶段,可以将本地机器作为服务器,只需要安装类似花生壳的软件实现内网穿透,最后在...

一、前言本教程根据应用场景进行划分,重点阐述企业微信在不同应用场景下的开发思路,同时讲解使用的接口及细节。进行企业微信应用开发之前需要准备:1.可供外网访问服务器用于发布应用,调用官方API及处理官方......

一、前言

本教程根据应用场景进行划分,重点阐述企业微信在不同应用场景下的开发思路,同时讲解使用的接口及细节。

进行企业微信应用开发之前需要准备:

1.可供外网访问服务器用于发布应用,调用官方API及处理官方服务器的回调事件。开发阶段,可以将本地机器作为服务器,只需要安装类似花生壳的软件实现内网穿透,最后在企业微信将域名加至可信域名列表中。

2.处理GET、POST请求的能力及调试工具。官方API在调用时和回调时采用GET和POST两种方式,数据采用JSON格式传输。在开发阶段,可以使用官方提供的“接口调试工具”(地址:)进行测试,也可在本地安装Postman软件进行远程调试。

3.阅读官方API文档。企业微信开发分为三种场景:企业内部开发、第三方应用开发和智慧硬件开发。其中企业内部开发是最为常用且重要的一种方式,非常有必要阅读。另外官方提供了“加解密库”的下载,建议下载和使用,避免出现加解密失败Bug。每个企业微信应用都有一个密钥用于对传输数据加密,以保证数据传输安全性。官方已提供了c++、python、Java、php、cwechat_redirect

具体参数含义为

假设redirect_uri为,state为1000,则重定向地址为:

;code=AAAAAAgG333qs9EdaPbCAP1VaOrjuNkiAstate=1000

2.获取access_token

在获取access_token前,要先获取企业corpid和serect(密钥secret分为三类:自建应用serect、通讯录secret、外部联系人secret。每一个密钥不仅是调用API的安全钥匙,还是对不同权限的限定)

获取access_token请求地址为:;corpidcorpsecret=secret

请求方式:GET

返回结果格式为:

{"errcode":0,"errmsg":"ok","access_token":"yiuH7Mvyf..","expires_in":7200}

调用效果如下图

3.获取userid

在获取到授权码code和访问令牌access_token后,最后一步即可调用API获取当前访问成员用户的userid。

请求地址:;code=CODE

参数中code使用时需注意:code仅能使用1次,且有效期为5分钟,5分钟内未使用则自动过期。

请求方式:GET

返回结果存在两种情况:

(1)如果当前访问者为“企业成员”,则返回userid

{"errcode":0,"errmsg":"ok","UserId":"USERID","DeviceId":"DEVICEID"}

返回结果中UserId即为成员在当前企业微信中的唯一标识。DeviceId为设备编号,安装企业微信时随机生成,可用于标识一台手机。

(2)如果当前访问者不是企业成员,则返回OpenId

{"errcode":0,"errmsg":"ok","OpenId":"OPENID","DeviceId":"DEVICEID"}

返回结果中OpenId为当前访问者在企业微信中的唯一标识,仅限企业微信使用,与公众号中的OpenId不同。企业目前仅限支付场景使用。

至此,用户授权流程完成,应用已经获得了成员用户userid(非成员用户openid)。后续如若获取成员用户的详细信息,可调用【读取成员】接口。

三、常见问题

1.授权码回调返回两次,code返回两次问题

答:授权码code只能使用1次。若出现2次,则表明腾讯服务器认为第一次没能收到正确的响应,所以才会有第2次回调。出现这个情况,需检查:

(1)域名是否正确可到达,是否存在防火墙拦截。

(2)回调地址是否进行了URLCode

(3)是否正确返回了200状态码

(4)本地进行code判断,若重复则丢弃。

2.userid与openid的关系

答:userid是成员用户在企业微信中的标识,可理解为账号。对于外部联系人,具有external_userid对其在企业微信中进行标识。openid是由userid转化过来的,也是其在企业微信中的标识。但需要注意此openid与微信公众平台openid不同。企业微信中成员用户的userid转为openid后,目前仅用于企业付款、发红包使用。外部联系人external_userid也可以转换external_user_openid,但也仅用于支付场景。

最新文章