职贝云数AI新零售门户

标题: 企业微信自建外部运用获取用户敏感数据,ToB Dev 社群同行投稿 [打印本页]

作者: A6Qua4jMtW    时间: 2023-2-28 22:30
标题: 企业微信自建外部运用获取用户敏感数据,ToB Dev 社群同行投稿
文章来自CSDN博主ha_lydms投稿

https://blog.csdn.net/lydms/article/details/128991241
ToB Dev 长期征集企业微信等B端开发相关文章,欢迎大家投稿
一、简介

1、企微数据安全更新

从2022年6月20号20点末尾,除通讯录同步以外的基础运用(如客户联络、微信客服、会话存档、日程等),以及新创建的自建运用与代开发运用,调用该接口时,不再前往以下字段:头像、性别、手机、邮箱、企业邮箱、员工个人二维码、地址,运用需求经过oauth2手工授权的方式获取管理员与员工本人授权的字段。
2、身份验证方式

目前有2种身份验证方式:网页授权登录、扫码授权登录。
2.1 网页授权登录(企微外部)

官网地址

https://developer.work.weixin.qq.com/document/path/91335

企业微信提供了OAuth的授权登录方式,可以让从企业微信终端打开的网页获取成员的身份信息,从而免去登录的环节。企业运用中的URL链接(包括自定义菜单或者音讯中的链接),均可经过OAuth2.0验证接口来获取成员的UserId身份信息。

企业微信OAuth2接入流程

调用流程为:A) 用户访问第三方服务,第三方服务经过构造OAuth2链接(参数包括当前第三方服务的身份ID,以及重定向URI),将用户引导到认证服务器的授权页 B) 用户选择能否赞同授权 C) 若用户赞同授权,则认证服务器将用户重定向到第一步指定的重定向URI,同时附上一个授权码。D) 第三方服务收到授权码,带上授权码来源的重定向URI,向认证服务器央求凭证。E) 认证服务器检查授权码和重定向URI的有效性,经过后颁发AccessToken(调用凭证)

(, 下载次数: 1)

静默授权与手动授权
2.2 扫描授权登录(阅读器)

企业微信提供了OAuth的扫码登录授权方式,可以让企业的网站在阅读器内打开时,引导成员运用企业微信扫码登录授权,从而获取成员的身份信息,免去登录的环节。

(, 下载次数: 2)

二、企微运用配置

(, 下载次数: 3)

1、企微配置可信域名

参考另一篇

企微配置可信域名
https://blog.csdn.net/lydms/article/details/128885914
2、企微授权登录

(, 下载次数: 2)

3、企微可信IP

仅所配IP可经过接口获取企业数据。

[外链图片转存失败,源站能够有防盗链机制,建议将图片保存上去直接上传(img-QksAk0IP-1676134790625)(/Users/liyangda/Library/Application Support/typora-user-images/image-20230212005912032.png)]
三、网页授权登录方式(企微)

1、构造网页登录链接

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与DeviceId);snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。
state重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
agentid运用agentid,建议填上该参数(假如为第三方运用或者代开发自建运用,未填该参数不会触发接口答应自动激活)。snsapi_privateinfo时必填否则报错;
#wechat_redirect终端运用此参数判别能否需求带下身份信息


员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。
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
2、企微打开授权

在企微打开后,会进入登录授权页面,打开相应衔接后:

(, 下载次数: 2)

授权成功后,重定向地址:

企业可根据code参数调用获取员工的信息
http://lydms.com/?code=ra8mSx5bH_mga5OqylDfvuiAoXuI8ixqPipUsBbd9iQ&state=date001
3、获取访问用户身份

**央求方式:**GET(HTTPS) 央求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token={{ACCESS_TOKEN}}&code={{CODE}} 参数阐明:
参数必须阐明
access_token调用接口凭证
code经过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能运用一次,5分钟未被运用自动过期。


前往参数
{
  "userid": "lydms",
  "errcode": 0,
  "errmsg": "ok",
  "user_ticket": "PY_KcdqUjOPC6drzEjisMV3gRxEJayOwjbNlaZirW3r6tRQ6A2Lb3T-ibT07giuXmP7EIM6XwkbqPzzrl3dweqtx4HoLFMeql5qpDARv0bw",
  "expires_in": 1800
}
参数阐明
errcode前往码
errmsg对前往码的文本描画内容
userid成员UserID。若需求获得用户概况信息,可调用通讯录接口:读取成员。假如是互联企业/企业互联/上下游,则前往的UserId格式如:CorpId/userid
user_ticket成员票据,最大为512字节,有效期为1800s。scope为snsapi_privateinfo,且用户在运用可见范围之内时前往此参数。后续应用该参数可以获取用户信息或敏感信息,参见"获取访问用户敏感信息"。暂时不支持上下游或/企业互联场景

4、获取访问用户敏感信息

**央求方式:**POST(HTTPS) 央求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token={{ACCESS_TOKEN}}
{
   "user_ticket": "USER_TICKET"
}

参数阐明:
参数必须阐明
access_token调用接口凭证
user_ticket成员票据


前往参数:
{
  "errcode": 0,
  "errmsg": "ok",
  "userid": "lydms",
  "mobile": "15811000000",
  "gender": "1",
  "email": "lydms@lydms.com",
  "avatar": "https://wework.qpic.cn/wwpic/250331_p99RzeaaZ_16760317/0",
  "qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vcf0b80b68e7a59",
  "biz_mail": "lydms@lydms.com",
  "address": ""
}

参数阐明:
参数阐明
errcode前往码
errmsg对前往码的文本描画内容
userid成员UserID
gender性别。0表示未定义,1表示男性,2表示女性。仅在用户赞同snsapi_privateinfo授权时前往真实值,否则前往0.
avatar头像url。仅在用户赞同snsapi_privateinfo授权时前往
qr_code员工个人二维码(扫描可添加为外部联络人),仅在用户赞同snsapi_privateinfo授权时前往
mobile手机,仅在用户赞同snsapi_privateinfo授权时前往,第三方运用不可获取
email邮箱,仅在用户赞同snsapi_privateinfo授权时前往,第三方运用不可获取
biz_mail企业邮箱,仅在用户赞同snsapi_privateinfo授权时前往,第三方运用不可获取
address仅在用户赞同snsapi_privateinfo授权时前往,第三方运用不可获取

四、扫描授权登录(阅读器)

1、构造独立窗口登录二维码

https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=CORPID&agentid=AGENTID&redirect_uri=REDIRECT_URI&state=STATE

参数阐明
参数必须阐明
appid企业微信的CorpID,在企业微信管理端查看
agentid授权方的网页运用ID,在详细的网页运用中查看
redirect_uri重定向地址,需求停止UrlEncode
state用于保持央求和回调的形态,授权央求后原样带回给企业。该参数可用于防止csrf攻击(跨站央求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session停止校验
lang自定义言语,支持zh、en;lang为空则从Headers读取Accept-Language


案例:
假定当前
企业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参数。
2、扫码登录

在阅读器输入一下地址后:
https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=ww3e40cde07cca01&agentid=1000002&redirect_uri=https%3A%2F%2Fwww.lydms.com&state=web_login%40gyoss9

用户扫码登录

[外链图片转存失败,源站能够有防盗链机制,建议将图片保存上去直接上传(img-3uQo3C0a-1676134790626)(/Users/liyangda/Library/Application Support/typora-user-images/image-20230212005120479.png)]

获取到重定向的地址
https://www.lydms.com/?code=Ta_E0rVc30IDRbmZ14mBnIDdmAOdsF-cJk4ZbNRWrgA&state=web_login@gyoss9&appid=ww3e40cde07cc21a01
3、获取访问用户身份

该接口用于根据code获取成员信息

**央求方式:**GET(HTTPS) 央求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE 参数阐明:
参数必须阐明
access_token调用接口凭证
code经过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能运用一次,5分钟未被运用自动过期。


权限阐明:  跳转的域名须完全婚配access_token对应运用的可信域名,否则会前往50001错误。 前往结果:  a) 当用户为企业成员时前往示例如下:
{
   "errcode": 0,
   "errmsg": "ok",
   "userid":"lydms"
}

参数阐明
errcode前往码
errmsg对前往码的文本描画内容
userid成员UserID。若需求获得用户概况信息,可调用通讯录接口:读取成员




ToB Dev企业微信同行群

欢迎大家进群讨论交流

关于ToB Dev

上万名企微运用开发者组成

企微开发三部曲视频教程作者

专注于企业微信开发分享




欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/) Powered by Discuz! X3.5