1、企微配置可信域名
2、企微获取成员userID
3、企微获取用户敏感数据


文章目录

    • 一、简介
      • 1、企微数据安全更新
      • 2、身份验证方式
        • 2.1 网页授权登录(企微内部)
        • 2.2 扫描授权登录(浏览器)
    • 二、企微应用配置
      • 1、企微配置可信域名
      • 2、企微授权登录
      • 3、企微可信IP
    • 三、网页授权登录方式(企微)
      • 1、构造网页登录链接
      • 2、企微打开授权
      • 3、获取访问用户身份
      • 4、获取访问用户敏感信息
    • 四、扫描授权登录(浏览器)
      • 1、构造独立窗口登录二维码
      • 2、扫码登录
      • 3、获取访问用户身份

一、简介

1、企微数据安全更新

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

2、身份验证方式

目前有2种身份验证方式:网页授权登录、扫码授权登录。

2.1 网页授权登录(企微内部)

官网地址

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

企业微信OAuth2接入流程

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

静默授权与手动授权

  • 静默授权:用户点击链接后,页面直接302跳转至 redirect_uri” />

    二、企微应用配置

    1、企微配置可信域名

    参考另一篇

    企微配置可信域名

    https://blog.csdn.net/lydms/article/details/128885914

    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" />

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

    企业可根据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.comstate设置为: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。若需要获得用户详情信息,可调用通讯录接口:读取成员