企业微信自建应用获取登录用户敏感信息,一键授权 (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:应用密钥
    应用管理——>点开你创建的应用
    在这里插入图片描述
    点击查看后到企业微信上去查看
    在这里插入图片描述

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
如果你想在Java实习中实现企业微信自建应用授权登录获取用户信息,可以按照以下步骤进行: 1. 获取应用ID和应用Secret,可以在企业微信管理后台创建自建应用时获得。 2. 配置可信域名、回调URL、授权回调域名和网页授权域名,确保域名的正确性和安全性。 3. 在Java项目中使用企业微信提供的OAuth2.0接口或者开源的Java SDK,实现授权登录功能。 4. 引导用户跳转到企业微信授权页面进行授权授权成功后,企业微信会回调预设的回调URL,返回授权码。 5. 通过授权获取access_token和用户信息,可以使用企业微信提供的OAuth2.0接口或者开源的Java SDK完成。 以下是一个使用Java SDK实现企业微信自建应用授权登录获取用户信息的示例代码: ```java // 1. 获取应用ID和应用Secret String appId = "your_app_id"; String appSecret = "your_app_secret"; // 2. 配置可信域名、回调URL、授权回调域名和网页授权域名 // 3. 使用Java SDK实现授权登录功能 WxCpService wxCpService = WxCpConfiguration.getCpService(appId); String redirectUrl = "https://your_callback_url"; String state = "your_state"; String authorizeUrl = wxCpService.getOauth2Service().buildAuthorizationUrl(redirectUrl, state); // 4. 引导用户跳转到企业微信授权页面进行授权 // 5. 企业微信回调预设的回调URL,返回授权码 String code = request.getParameter("code"); // 6. 通过授权获取access_token和用户信息 WxCpOAuth2AccessToken wxCpOAuth2AccessToken = wxCpService.getOauth2Service().getAccessToken(code); String accessToken = wxCpOAuth2AccessToken.getAccessToken(); String userId = wxCpOAuth2AccessToken.getUserId(); WxCpUser wxCpUser = wxCpService.getUserService().getById(userId); ``` 注意事项: 1. 在开发过程中,需要保证应用ID、应用Secret、回调URL等参数的正确性。 2. 在获取access_token和用户信息时,需要保证请求的准确性和安全性。 3. 在获取用户信息时,需要保证授权作用域的正确性和权限的足够性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li-xun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值