构造网页授权链接
最后更新:2024/07/30
如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数:
```javascript
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect
```
**参数说明:**
| 参数 | 必须 | 说明 |
|------------------|-----|-----------------------------------------------------------------------------------------------------------------------|
| appid | 是 | 企业的CorpID |
| redirect_uri | 是 | 授权后重定向的回调链接地址,**请使用urlencode对链接进行处理** |
| response_type | 是 | 返回类型,此时固定为:code |
| scope | 是 | 应用授权作用域。
snsapi_base:静默授权,可获取成员的基础信息(UserId);
snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息(此时要求成员必须在应用可见范围内)。 |
| state | 否 | 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节 |
| agentid | 是 | 应用agentid,**建议填上该参数**(对于第三方应用和代开发自建应用,在填写该参数的情况下或者在工作台、聊天工具栏、应用会话内发起oauth2请求的场景中,会触发接口许可的自动激活)。snsapi_privateinfo时必填否则报错; |
| #wechat_redirect | 是 | 终端使用此参数判断是否需要带上身份信息 |
员工点击后,页面将跳转至 redirect\_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。
**示例:**
假定当前企业CorpID:`wxCorpId`
访问链接:`http://api.3dept.com/cgi-bin/query?action=get`
根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:
```javascript
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxCorpId&redirect_uri=http%3a%2f%2fapi.3dept.com%2fcgi-bin%2fquery%3faction%3dget&response_type=code&scope=snsapi_base&state=#wechat_redirect
```
> 注意,构造OAuth2链接中参数的redirect\_uri是经过UrlEncode的
员工点击后,页面将跳转至
```javascript
http://api.3dept.com/cgi-bin/query?action=get&code=AAAAAAgG333qs9EdaPbCAP1VaOrjuNkiAZHTWgaWsZQ&state=
```
企业可根据code参数调用[获取员工的信息](https://developer.work.weixin.qq.com/document/path/91022/#15047)
### [](https://developer.work.weixin.qq.com/document/path/91022/#scope%E7%9A%84%E7%89%B9%E6%AE%8A%E6%83%85%E5%86%B5)scope的特殊情况
- 当oauth2中appid=corpid时,scope为snsapi\_privateinfo时,必须填agentid参数,**否则系统会视为snsapi\_base,不会返回敏感信息**。同时,要求成员必须在应用可见范围内,否则页面会报错提示成员不在可见范围内。