企业access_token,与用户access_token区别,获取方式,如何获取用户信息
- 手机
- 2025-09-20 10:12:03

在企业微信开发中,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 qyapi.weixin.qq /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 = " qyapi.weixin.qq /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。
获取方式引导用户授权:
构造授权 URL,引导用户访问并授权。
授权 URL 格式:
复制
open.weixin.qq /connect/oauth2/authorize?appid=YOUR_CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirectREDIRECT_URI 是授权后重定向的 URL。
scope 可以是 snsapi_base(静默授权)或 snsapi_userinfo(需要用户确认)。
获取授权码 (code):
用户授权后,企业微信会跳转到 REDIRECT_URI,并附带一个 code 参数。
通过 code 获取用户 access_token:
使用 code 调用以下接口获取用户 access_token:
复制
GET qyapi.weixin.qq /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 = " qyapi.weixin.qq /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 qyapi.weixin.qq /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 = " qyapi.weixin.qq /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 和用户信息,并实现相关功能。
开启新对话
企业access_token,与用户access_token区别,获取方式,如何获取用户信息由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“企业access_token,与用户access_token区别,获取方式,如何获取用户信息”