在做企业号 OAuth2.0验证 的时候走了一些弯路,在这里记录一下。
当我查官方的接口文档的时候就给了一下代码:
企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息。
通过此接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:
1、企业应用中的URL链接直接填写企业自己的页面地址
2、成员跳转到企业页面时,企业校验是否有代表成员身份的cookie,此cookie由企业生成
3、如果没有获取到cookie,重定向到OAuth验证链接,获取成员身份后,由企业生成代表成员身份的cookie
4、根据cookie获取成员身份,进入相应的页面
注意,此URL的域名,必须完全匹配企业应用设置项中的‘可信域名‘(如果你的redirect_uri有端口号,那‘可信域名‘也必须加上端口号),否则跳转时会提示redirect_uri参数错误。
- 配置企业号的应用(这个配置比较简单)
- 在做验证的时候官方文档也特别说明此URL的域名,“必须完全匹配企业应用设置项中的‘可信域名‘(如果你的redirect_uri有端口号,那‘可信域名‘也必须加上端口号)”,在这里遇到已的坑,当时我发布的就是80端口,然后我就想还是写上吧,其实我访问的时候并没有写端口,因为80端口是IIS的默认端口。如果我每次访问的时候都会报错,在浏览器上又可以打开,最后我又看了遍,接口文档。我就把端口去掉,这下好用了。所以大家要记住,端口一定要和你写的跳转地址一致。;
- 剩下就是取Code
代码如下:
代码比较简单
string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+corpId + "&redirect_uri=" + redirecturl + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; Response.Redirect(url);
string code = Request.QueryString["code"];