参考文献
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmscW2g0-1663410315300)(http://cdn.liancode.top/img/设置可信域名1.png)]](https://1000bd.com/contentImg/2023/11/08/051906862.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y18chiFV-1663410315301)(http://cdn.liancode.top/img/设置可信域名2.png)]](https://1000bd.com/contentImg/2023/11/08/051906879.png)
❗️可信域名必须与企业主体相同或相关联
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tcoFAixl-1663410315301)(http://cdn.liancode.top/img/企业微信授权登录.png)]](https://1000bd.com/contentImg/2023/11/08/051906840.png)

❗️授权回调域必须与可信域名一直,如果有设置端口,则端口也要配置一直,详情看开发文档。
❗️该回调域名提前解析到服务器ip地址
String encodeUrl = URLEncoder.encode(props.getOauth2CallbackUrl(), StandardCharsets.UTF_8);
String url = "https://open.work.weixin.qq.com/wwopen/sso/qrConnect?" +
"appid=" + props.getCorpid() +
"&agentid=" + props.getAgentid() +
"&redirect_uri=" + encodeUrl +
"&state=" + subject.getUserId();
参数说明
| 参数 | 必须 | 说明 |
|---|---|---|
| appid | 是 | 企业微信的CorpID,在企业微信管理端查看 |
| agentid | 是 | 授权方的网页应用ID,在具体的网页应用中查看 |
| c | 是 | 重定向地址,需要进行UrlEncode |
| state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验 |
| lang | 否 | 自定义语言,支持zh、en;lang为空则从Headers读取Accept-Language,默认值为zh |
若用户不在agentid所指应用的可见范围,扫码时会提示无权限。
假定当前
企业CorpID:wxCorpId
开启授权登录的应用ID:1000000
登录跳转链接:http://api.3dept.com
state设置为:weblogin@gyoss9
需要配置的授权回调域为:api.3dept.com
根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:
https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxCorpId&agentid=1000000&redirect_uri=http%3A%2F%2Fapi.3dept.com&state=web_login%40gyoss9
成功:重定向到redirect_uri会携带code和state参数
redirect_uri?code=CODE&state=STATE
失败:重定向到redirect_uri,但不会携带code,仅有state参数
回调业务按需处理