当前位置: 首页 > news >正文

企业access_token,与用户access_token区别,获取方式,如何获取用户信息

在企业微信开发中,access_token 是调用企业微信 API 的重要凭证。根据使用场景的不同,access_token 分为 企业 access_token 和 用户 access_token。以下是它们的区别、获取方式以及如何获取用户信息的详细说明。


1. 企业 access_token 与用户 access_token 的区别

特性企业 access_token用户 access_token
用途用于调用企业微信的企业级 API,如管理通讯录、发送消息等。用于调用企业微信的用户级 API,如获取用户信息、OAuth2 授权等。
获取方式通过企业 ID (corpid) 和应用 Secret (corpsecret) 获取。通过 OAuth2 授权流程获取(需要用户授权)。
有效期7200 秒(2 小时),需要定时刷新。7200 秒(2 小时),需要定时刷新。
权限范围企业级权限,可以访问企业所有数据。用户级权限,只能访问授权用户的数据。

2. 获取企业 access_token

企业 access_token 是调用企业微信 API 的基础凭证,用于管理企业数据。

获取方式

通过企业 ID (corpid) 和应用 Secret (corpsecret) 调用以下接口获取:

复制

GET https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=YOUR_CORPID&corpsecret=YOUR_CORPSECRET
示例代码(Java)

java

复制

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;

public class WeChatAccessToken {

    private static final String CORP_ID = "YOUR_CORP_ID";
    private static final String CORP_SECRET = "YOUR_CORP_SECRET";
    private static final String ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s";

    public static String getAccessToken() throws IOException {
        String url = String.format(ACCESS_TOKEN_URL, CORP_ID, CORP_SECRET);
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet(url);
            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                HttpEntity entity = response.getEntity();
                String responseString = EntityUtils.toString(entity);
                JSONObject json = JSONObject.parseObject(responseString);
                return json.getString("access_token");
            }
        }
    }

    public static void main(String[] args) throws IOException {
        String accessToken = getAccessToken();
        System.out.println("企业 access_token: " + accessToken);
    }
}

3. 获取用户 access_token

用户 access_token 是通过 OAuth2 授权流程获取的,用于访问用户级 API。

获取方式
  1. 引导用户授权:

    • 构造授权 URL,引导用户访问并授权。

    • 授权 URL 格式:

      复制

      https://open.weixin.qq.com/connect/oauth2/authorize?appid=YOUR_CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
      • REDIRECT_URI 是授权后重定向的 URL。

      • scope 可以是 snsapi_base(静默授权)或 snsapi_userinfo(需要用户确认)。

  2. 获取授权码 (code):

    • 用户授权后,企业微信会跳转到 REDIRECT_URI,并附带一个 code 参数。

  3. 通过 code 获取用户 access_token:

    • 使用 code 调用以下接口获取用户 access_token

      复制

      GET https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
示例代码(Java)

java

复制

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;

public class WeChatUserAccessToken {

    private static final String CORP_ID = "YOUR_CORP_ID";
    private static final String CORP_SECRET = "YOUR_CORP_SECRET";
    private static final String USER_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=%s&code=%s";

    public static String getUserAccessToken(String accessToken, String code) throws IOException {
        String url = String.format(USER_INFO_URL, accessToken, code);
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet(url);
            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                HttpEntity entity = response.getEntity();
                String responseString = EntityUtils.toString(entity);
                JSONObject json = JSONObject.parseObject(responseString);
                return json.getString("access_token");
            }
        }
    }

    public static void main(String[] args) throws IOException {
        String accessToken = "YOUR_ENTERPRISE_ACCESS_TOKEN";
        String code = "USER_AUTHORIZATION_CODE";
        String userAccessToken = getUserAccessToken(accessToken, code);
        System.out.println("用户 access_token: " + userAccessToken);
    }
}

4. 获取用户信息

通过用户 access_token 和用户 UserID,可以获取用户的详细信息。

获取方式

调用以下接口获取用户信息:

复制

GET https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID
示例代码(Java)

java

复制

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;

public class WeChatUserInfo {

    private static final String USER_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s";

    public static JSONObject getUserInfo(String accessToken, String userId) throws IOException {
        String url = String.format(USER_INFO_URL, accessToken, userId);
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet(url);
            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                HttpEntity entity = response.getEntity();
                String responseString = EntityUtils.toString(entity);
                return JSONObject.parseObject(responseString);
            }
        }
    }

    public static void main(String[] args) throws IOException {
        String accessToken = "YOUR_ENTERPRISE_ACCESS_TOKEN";
        String userId = "USER_ID";
        JSONObject userInfo = getUserInfo(accessToken, userId);
        System.out.println("用户信息: " + userInfo);
    }
}

5. 总结

  • 企业 access_token 用于调用企业级 API,通过企业 ID 和应用 Secret 获取。

  • 用户 access_token 用于调用用户级 API,通过 OAuth2 授权流程获取。

  • 获取用户信息需要用户 UserID 和企业 access_token

通过以上步骤,你可以在企业微信开发中获取 access_token 和用户信息,并实现相关功能。

开启新对话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/45246.html

相关文章:

  • 释放你的IDE潜能:Code::Blocks 插件创意开发深度指南
  • C++—类与对象(下)
  • C#上位机--三元运算符
  • 【分库分表】基于mysql+shardingSphere的分库分表技术
  • 1-kafka单机环境搭建
  • 2025-2-27-4.10 动态规划(0-1 背包问题)
  • Python 编程题 第五节:落体反弹问题、求指定数列之和、求阶乘的和、年龄急转弯、判断回文数、判断星期几、矩阵主对角线元素之和
  • Rk3568驱动开发_自动创建设备节点_8
  • ListControl双击实现可编辑
  • 更新anaconda安装包后重新配置环境
  • LabVIEW 无法播放 AVI 视频的编解码器解决方案
  • [SAP MM] 标准价格和移动平均价格
  • 小程序性能优化-预加载
  • 知识图谱科研文献推荐系统vue+django+Neo4j的知识图谱
  • AtCoder Beginner Contest AT_abc395_d ABC395D Pigeon Swap 题解
  • Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序
  • ollama 提供给外部访问
  • Java——String
  • 数据库设计报告
  • leetcode28 找出字符串第一个匹配值的下标 KMP算法
  • android 文本控件显示滑动条并自动滑动到最底部
  • 初识 Node.js
  • 微服务学习(1):RabbitMQ的安装与简单应用
  • 2025-03-01 学习记录--C/C++-C语言 整数类型对比
  • Lua | 每日一练 (4)
  • JVM虚拟机的深入浅出
  • 数据结构1-4 队列
  • 云原生架构篇——Kubernetes弹性伸缩与Service Mesh实践
  • 在Linux上安装go环境
  • IP-----双重发布