企业微信三方开发(二):获取access_token及授权配置

本文详细介绍了企业微信第三方开发中,获取服务商、第三方应用及授权企业三种access_token的过程,包括所需参数、请求方法及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其他链接

初识微信开发

企业微信三方开发:注册企业微信服务商

企业微信三方开发(一):回调验证及重要参数获取

企业微信三方开发(二):获取access_token

企业微信三方开发(三):网页授权登录

企业微信三方开发(四):发送消息

企业微信三方开发(五):扫码登录

前言一

再次强调一下,我们这里的后台目前仅是为了验证企业微信三方开发的逻辑,所以并未分层。所有请求接收和业务处理都在controller中完成,数据也都存在配置文件data.properties中。也未做必要逻辑判断和排错处理,以尽量使代码简洁清晰。请知悉!

前言二

上一篇文章中我们已经为企业安装好了应用并获取到了两个重要的参数:suite_ticketauth_code。如果要通过应用获取授权企业的基本信息和使用企业微信的一些接口,我们需要先获得一些必要的 access_token

access_token(访问凭证),顾名思义:是你访问企业微信后台的通行证。

微信的所有开发开发通常都是以获取token开始的。

企业微信三方开发要获取三种类型的access_token:

类型 说明 适用场景
服务商的token 以corpid(服务商CorpID)、provider_secret(服务商密钥)换取 provider_access_token,代表的是服务商的身份 用于服务商级别的接口调用,比如登录授权、推广二维码等
第三方应用的token 以suite_id(第三方应用ID)、suite_secret(第三方应用密钥)、suite_ticket(后台定时推送)换取 suite_access_token,代表第三方应用的身份 用于获取第三方应用的预授权码,获取授权企业信息等。
授权企业的token 企业安装第三方应用后,第三方服务商以企业的corpid、永久授权码来获取 access_token 用于操作授权企业相关接口,如通讯录管理,消息推送等。

在此文中我们将依次获取这三个token。

同时安装应用还需要先授权配置,在第4小节即进行授权配置。

技术栈及工具

  • 开发框架:spring-boot
  • 开发工具: idea

获取TOKEN

在这里插入图片描述
上图是获取三个token所需的参数,首先是provider_access_token ,所需的两个参数都是在企业微信服务商后台获取。

其次是 suite_access_token,前两个参数也是在后台直接获取,而 suite_ticket 是微信后台每隔十分钟推送一次,我们通过 VerifyController 包中的 getSuiteToken 方法 获取,并保存到 data.properties 中(具体方法查看教程一

最后是获取企业的 accesstoken,我们要先通过教程一的安装过程中已获取到的临时授权码 auth_code获取到永久授权码 permanent_code 和授权企业的 auth_corpid

1、获取provider_access_token

新建一个TokenController:

package com.tan.cwp.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/token")
public class TokenController {
   
  Logger logger = LoggerFactory.getLogger(TokenController.class);
}

其中新建一个方法 getProviderToken() 用于获取 provider_access_token(具体访问路径及参数说明查看官方文档):

    /*
     * 获取服务商凭证provider_access_token
     *
     * provider_access_token为接口访问凭证,有效期7200ms,需缓存
     * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token
     * 请求方式: POST
     * @parm1 服务商corpid
     * @parm2 服务商provider_secret
     */
    @RequestMapping(value = "p_token.do" ,method = RequestMethod.POST)
    public void getProviderToken(HttpServletRequest request, HttpServletResponse response) throws JSONException, IOException {
   
        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
        JSONObject jsonParms = new JSONObject();
        jsonParms.put("corpid", Constant.CorpID);
        jsonParms.put("provider_secret", Constant.ProviderSecret);

        //创建httpclient对象
        CloseableHttpClient client = HttpClients.createDefault();
        //创建post方式请求对象
        HttpPost httpPost = new HttpPost(url);

        //装填参数
        StringEntity s = new StringEntity(jsonParms.toString(), "utf-8");
        s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                "application/json"));
        //设置参数到请求对象中
        httpPost.setEntity(s);
        System.out.println("请求地址:"+url);

        //设置header信息
        httpPost.setHeader("Content-type", "application/json");
        httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

        //执行请求操作,并拿到结果(同步阻塞)
        CloseableHttpResponse httpresponse = client.execute(httpPost);
        //获取结果实体
        HttpEntity entity = httpresponse.getEntity();
        JSONObject jsonObj = null;
        if (entity != null) {
   
            //按指定编码转换结果实体为String类型
            St
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值