微信企业号第三方应用开发[四]——用户登录应用
应用被授权方企业号授权后,授权方企业号用户即可以登录应用。至此,接入企业号第三方应用的开发到了最后一步——获取登录用户信息。
在企业号开发中要获取用户信息,需要获取到用户经OAuth2.0验证时生成的code与企业号的corpid。在企业号第三方应用中也是需要得到这两个参数才能调用之后的一系列接口,特别的是,在企业号开发中corpid是自己的企业号固定的corpid,而企业号第三方应用要获取的则是授权方企业号corpid。
一、获取OAuth2.0的用户身份code
OAuth2.0验证接口说明
企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息。
通过此接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:
1、企业应用中的URL链接直接填写企业自己的页面地址
2、成员跳转到企业页面时,企业校验是否有代表成员身份的cookie,此cookie由企业生成
3、如果没有获取到cookie,重定向到OAuth验证链接,获取成员身份后,由企业生成代表成员身份的cookie
4、根据cookie获取成员身份,进入相应的页面
注意,此URL的域名,必须完全匹配企业应用设置项中的'可信域名'(如果你的redirect_uri有端口号,那'可信域名'也必须加上端口号),否则跳转时会提示redirect_uri参数错误。
企业获取code
企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:
- 参数说明
参数 | 必须 | 说明 |
---|---|---|
appid | 是 | 企业的CorpID |
redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
response_type | 是 | 返回类型,此时固定为:code |
scope | 是 | 应用授权作用域,此时固定为:snsapi_base |
state | 否 | 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节 |
#wechat_redirect | 是 | 微信终端使用此参数判断是否需要带上身份信息 |
员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。
假设我们处理登录逻辑的路径为http://AAA.com/api/weixin/login.do
在设置应用的主页路径时我们可以设置为OAuth验证的路径,而主页URL又支持$CORPID$模板,所以我们可以设置主页URL如下
https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do&response_type=code&scope=snsapi_base&state=1#wechat_redirect
二、获取corpid
经过OAuth验证后跳转的路径为页面将跳转至 redirect_uri?code=CODE&state=STATE,URL中我们只能获取到code,我们更希望跳转后的路径是redirect_uri?corpid=CORPID&code=CODE&state=STATE,从而把corpid一并获取。
考虑到URL支持$CORPID$模板,逻辑上是会把我们配置的URL中所有$CORPID$字段转换成授权方企业号的corpid,所以我们把redirect_uri改为如下
http://AAA.com/api/weixin/login.do?corpid=$CORPID$
而$CORPID$应该是url转码后再加入,以防止$符号被编码,所以最后我们得出的主页URL为
https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do%3Fcorpid%3D$CORPID$&response_type=code&scope=snsapi_base&state=1#wechat_redirect
得到corpid后我们即可根据企业号第三方应用接口获取到授权方企业的AccessToken,进而获取授权方企业号的用户信息。
消息:新博客地址 blog.leapmie.com,以后的更新都会在新博客首发,感谢支持~(园子视情况更新)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端