原 java 企业微信网页授权登陆
版权声明:本文为博主原创文章,请尊重他人的劳动成果,转载请附上原文出处链接和本声明。
本文链接:https://www.91mszl.com/zhangwuji/article/details/1442
4.1)创建成功后的页面
4.2)鼠标把滚动条往下拉,设置网页授权及JS SDK
注意:需要将微信给你的 WW_verify_9dnU7IhmiJOM7KhF.txt 文件放到根域名下,并且验证通过后才能保存成功。
请求方式:get
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xx&corpsecret=xx
参数 | 必须 | 说明 |
---|---|---|
corpid | 是 | 企业ID |
corpsecret | 是 | 应用的凭证密钥,注意应用需要是启用状态 |
注意:每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取
企业ID的获取方式见第十一章节
6.2)完整的请求地址:
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xx&corpsecret=xx6.3)请求截图如下:
6.4)响应结果:
{
"errcode": 0,
"errmsg": "ok",
"access_token": "yGKmQq102I0_kJ1HD7Q4CXGFFH1eZLGHc7S8l8cZ2mzCOpBQ5DGAjm0r5frXObJZpPzw",
"expires_in": 7200
}
6.5)响应结果参数说明:
参数 | 说明 |
---|---|
errcode | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | 返回码提示语 |
access_token | 获取到的凭证,最长为512字节 |
expires_in | 凭证的有效时间(秒) |
6.6)注意事项:
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。
由于企业微信每个应用的access_token是彼此独立的,所以进行缓存时需要区分应用来进行存储。
access_token至少保留512字节的存储空间。
企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。
7.1)静默授权的方式获取授权码
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xx&redirect_uri=https%3A%2F%2Fwww.91mszl.com%2Fcompany%2Fwx%2Flogin&response_type=code&scope=snsapi_base&state=123456&agentid=xx#wechat_redirect
7.2)手动授权的方式获取授权码
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xx&redirect_uri=https%3A%2F%2Fwww.91mszl.com%2Fcompany%2Fwx%2Flogin&response_type=code&scope=snsapi_privateinfo&state=&agentid=xx#wechat_redirect
7.3)静默授权和手动授权的区别:
1)静默授权只能获取到用户的UserId和DeviceId,无需用户手动点击按钮进行授权。
2)手动授权,需要用户手动点击授权按钮来进行授权,能获取到用户的详细信息,包含头像、二维码等敏感信息。需要注意的是手动授权的方式,用户授权后30天内无须再次授权。
7.4)参数说明:
参数 | 必须 | 说明 |
---|---|---|
appid | 是 | 企业的CorpID |
redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
response_type | 是 | 返回类型,此时固定为:code |
scope | 是 | 应用授权作用域。 snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId); snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。 |
state | 否 | 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节 |
agentid | 是 | 应用agentid,建议填上该参数(对于第三方应用和代开发自建应用,在填写该参数的情况下或者在工作台、聊天工具栏、应用会话内发起oauth2请求的场景中,会触发接口许可的自动激活)。snsapi_privateinfo时必填否则报错; |
#wechat_redirect | 是 | 终端使用此参数判断是否需要带上身份信息 |
7.5)在后端代码中编写获取授权码的接口(即上面的回调接口地址:redirect_uri),代码如下
/**
* 功能:企业微信回调接口,获取授权码
* @Author: zxb
* @Date: 2023-07-13 08:52:40
*/
@GetMapping("/login")
public ReturnMsgUtils getAuthorizeCode(CompanyWxLoginVO cv){
log.info("企业微信回调接口,获取授权码: {}", cv);
// 处理自己的业务逻辑
ReturnMsgUtils result=new ReturnMsgUtils(BusinessUtils.BUSINESS_CODE_200, BusinessUtils.BUSINESS_CODE_200_MSG);
return result;
}
通过调用7.1或7.2链接后再后端打印的结果:
企业微信回调接口,获取授权码: CompanyWxLoginVO(code=Jo4ESZF2E-YYh78e1sgTwEzut_SvM_AE4fmiW4L-K1k, state=123456)
8.1)静默授权的方式获取用户信息
请求方式:get
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
8.2)参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
code | 是 | 通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。 |
8.3)静默授权调用截图:
8.4)响应结果:
{
"userid": "ZhangXiaoBo",
"errcode": 0,
"errmsg": "ok"
}
9.1)手动授权的方式获取用户信息
请求方式:get
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
9.2)参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
code | 是 | 通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。 |
9.3)手动授权调用截图:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xx&redirect_uri=https%3A%2F%2Fwww.91mszl.com%2Fcompany%2Fwx%2Flogin&response_type=code&scope=snsapi_privateinfo&state=&agentid=xx#wechat_redirect
9.4)响应结果:
{
"userid": "ZhangXiaoBo",
"errcode": 0,
"errmsg": "ok",
"user_ticket": "xeO5YvNWViVVlN17rs4jmjKduGutvhhIb8f31NXXZbLa4yYJLA-8C8RfjIbLx-iu2SGKAawPC6G4MtsIPAk",
"expires_in": 1800
}
注意:静默授权和手动授权的响应结果是不一样的,手动授权这里多了一个user_ticket等会获取用户敏感信息的时候需要用到此参数。
9.5)手动授权第一次访问链接的效果图(第二次点击时30天内不会再次出现如下图所示的授权弹框)
请求方式:post
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=ACCESS_TOKEN
请求体:
{
"user_ticket": "xx"
}
10.2)参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
user_ticket | 是 | 成员票据 |
10.3)请求截图:
10.4)响应结果:
{
"errcode": 0,
"errmsg": "ok",
"userid": "ZhangXiaoBo",
"gender": "1",
"avatar": "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png",
"qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vcc01569bb2f2afa6f",
"biz_mail": "zhangxiaobo@jsxbzkjyxgs1.wecom.work",
"address": ""
}
11.1)corpid(企业id)查看页面
11.2)corpsecret(应用的凭证密钥)和 AgentId 查看页面
11.3)点击对应的应用名称进去
参考资料:
企业微信官方文档地址:https://developer.work.weixin.qq.com/document/path/91335
将域名进行urlencode的地址:https://www.sojson.com/encodeurl.html
2023-07-12 14:15:59 阅读(757)
名师出品,必属精品 https://www.91mszl.com
博主信息