企业微信自建应用获取登录用户敏感信息,一键授权 (python篇,详细多图)

企业微信自建应用配置

自建应用

  • 新建应用
    企业微信管理后台——>应用管理,拉到最下方,创建应用
    新建应用
  • 配置应用
    在应用管理页面点击刚才创建刚才建好的应用打开它,拉到最下方
    配置
    • 配置可信域名,网页授权及JS-SDK,点击打开,然后配置上你的域名加端口。
      在这里插入图片描述
      这个地方配置的域名+端口号,需要验证,点击申请验证,会得到一个文件
      在这里插入图片描述
      其实就是当访问你的域名+端口号+文件名时能得到这个文件或者能得到这个文件中的字符串即可完成验证成功,此处我是用的django,直接给了接口能返回这个文件中的字符串。代码如下
      在这里插入图片描述
      上面为路由,当访问文件名接口时返回了文件中的字符串,也可以直接返回这个文件。

    • 配置可以IP
      在可信域名配置完成后,打开企业可信IP,直接将你的服务器IP复制进去即可
      在这里插入图片描述

构造网页授权链接

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

注意,大写字母的单词为你要替换的地方,说明:

  • CORPID:企业的CorpID,在管理后台顶部导航选择我的的企业,然后就能找到企业ID

  • REDIRECT_URI:授权后重定向的回调链接地址,请注意要使用urlencode对链接进行处理,比如我要跳转的是http://li-xun.work:8082/authorize, urlencode处理后就是http%3A%2F%2Fli-xun.work%3A8082%2Fauthorize

  • scope:应用授权作用域。snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId);snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。

  • AGENTID:应用agentid,应用管理页点开创建的应用就能看到,snsapi_privateinfo时必填。

  • STATE:重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节

完整链接示例:

https://open.weixin.qq.com/connect/oauth2/authorize?
appid=wwa5550c05b175d888&redirect_uri=http%3A%2F%2Fli-xun.work%3A8082%2Fauthorize&response_type=code
&scope=snsapi_privateinfo&state=123456&agentid=1000012#wechat_redirect

配置完成后,当请求来到服务器后,直接跳转到此授权链接(手动授权登录),显示如下。
在这里插入图片描述

请求用户信息

当授权完成后,服务器的authorize接口得到一个重定向新请求,为什么是authorize接口,因为构造网页授权链接中配置的授权后重定向的回调链接地址是 http://li-xun.work:8082/authorize
在这里插入图片描述

此请求中带有一个用于身份认证的code,使用code可以换取到登录人的信息,使用如下:

请求接口:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
请求方式::GET

def get_user_info(CODE, ACCESS_TOKEN):
    """
    获取企业成员个人信息
    :param CODE: 企业成员CODE
    :param ACCESS_TOKEN: 企业ACCESS_TOKEN
    :return: 个人信息
    """
    url = 'https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=' + ACCESS_TOKEN + '&code=' + CODE
    res = requests.get(url)
    return res.json()

说明:

  • code:为上一步重定向携带的code。
  • ACCESS_TOKEN:是调用企业微信API的凭证,下文文也会补充说明。

此请求能得到的内容如下:
在这里插入图片描述
接着使用user_ticket去请求用户信息即可,使用如下:

请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=ACCESS_TOKEN

def get_user_detail(USER_TICKET, ACCESS_TOKEN):
    """
    获取企业成员详细信息
    :param USER_TICKET: 成员信息票据
    :param ACCESS_TOKEN: 企业ACCESS_TOKEN
    :return: 个人详细信息
    """
    url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=" + ACCESS_TOKEN
    d = {
    
    
        "user_ticket": USER_TICKET
    }
    res = requests.post(url=url, data=json.dumps(d))
    return res.json()

得到的结果就是我们的最终结果,用户信息
在这里插入图片描述

在这里插入图片描述

补充

ACCESS_TOKEN

这是企业微信接口调用的凭证,不同的应用ACCESS_TOKEN不同,使用如下:

请求方式: GET(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

  • ID:企业ID
    在这里插入图片描述
  • SECRET:应用密钥
    应用管理——>点开你创建的应用
    在这里插入图片描述
    点击查看后到企业微信上去查看
    在这里插入图片描述

以上,码字不易,如有帮助,可以帮忙点赞,收藏,关注
非常感谢

猜你喜欢

转载自blog.csdn.net/aifengaopeng/article/details/127313366