企业微信授权获取用户信息java后台和配置

背景:在企业微信工作台添加应用入口,根据点击人授权获得用户信息

简略记录一下流程:

首先要了解开发过程和开发步骤,可点击进入了解https://work.weixin.qq.com/api/doc#10028

了解之后呢,开始开发:

这里做的是网页授权步骤,因为这是嵌入手机的一个应用

第一步:进入企业微信管理后台页面,扫码进入https://work.weixin.qq.com/wework_admin/frame#apps

 

填写完毕后应用就创建第一步就完成了

第二步.填写必要数据

红色是需要填写的工作台的填写详见企业微信说明

https://open.weixin.qq.com/connect/oauth2/authorize?appid=企业微信编号&redirect_uri=回调地址,记得编码&response_type=code&scope=snsapi_privateinfo(此处根据需求填写)&agentid=应用的编码&state=随意写自己认证#wechat_redirect

写完了这些,应用端的基本就搞定了

后台的代码部分大体如下

@RequestMapping(value = "/weixinLogin",method = {RequestMethod.POST,RequestMethod.GET})
@ApiOperation(value="用户第三方登录", notes="企业微信授权登录")
public ModelAndView thridPartloginWeixin( HttpServletResponse response, HttpServletRequest request) throws Exception{
    String code = request.getParameter("code");
    String state =request.getParameter("state");
    logger.error("*********************1***********************");
    logger.error("企业微信测试—程1:code="+code+"state="+state);
    logger.error("************************************************");
    //获取公司凭证
    String access_token = HttpUtil.doGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=公司编码&corpsecret=应用的密码","access_token");
    logger.error("********************2*************************");
    logger.error("企业微信测试—程2:access_token="+access_token);
    logger.error("************************************************");

    //获取用户凭证
    String user_ticket = HttpUtil.doGet("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token="+access_token+"&code="+code,"user_ticket");
    logger.error("********************3**************************");
    logger.error("企业微信测试—程3:user_ticket="+user_ticket);
    logger.error("************************************************");

    //获取用户信息  用post请求
    JSONObject obj = new JSONObject();
    obj.put("user_ticket",user_ticket);
    String emial = HttpUtil.doPost("https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token="+access_token,obj.toString());
    logger.error("********************4**************************");
    logger.error("企业微信测试—程4:最后="+emial);
    logger.error("************************************************");
    return new ModelAndView( new RedirectView("www.baidu.com"));
}

事情到这基本上解决了,根据自己的需求完善就好了

不好意思一直没来更新,我把后面的贴上 


import net.sf.json.JSONObject;
import org.apache.http.*;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class HttpUtil {

	private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class);

	/**
	 * get请求
	 * 
	 * @return
	 * @throws IOException
	 * @throws ParseException
	 */
	public static String doGet(String url,String pam) throws ParseException, IOException {
		// try {
		HttpClient client = new DefaultHttpClient();
		// 发送get请求
		HttpGet request = new HttpGet(url);
		HttpResponse response = client.execute(request);

		/** 请求发送成功,并得到响应 **/
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			/** 读取服务器返回过来的json字符串数据 **/
			String strResult = EntityUtils.toString(response.getEntity());
			if (strResult != null && strResult.contains(pam)) {
				JSONObject object = JSONObject.fromObject(strResult);
				return object.get(pam).toString();
			} else {
				logger.error("获取企业微信凭证");
				throw new ParseException("获取企业微信凭证:" + strResult);
			}
		}
		// } catch (IOException e) {
		// logger.error("获取微信小程序token错误:" + e.getMessage(), e);
		// e.printStackTrace();
		// }

		return null;
	}

	/**
	 * post请求(用于请求json格式的参数)
	 * 
	 * @param url
	 * @param params
	 * @return
	 */
	public static String doPost(String url, String params) {

		CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);// 创建httpPost
		httpPost.setHeader("Accept", "application/json");
		httpPost.setHeader("Content-Type", "application/json");
		String charSet = "UTF-8";
		StringEntity entity = new StringEntity(params, charSet);
		httpPost.setEntity(entity);
		CloseableHttpResponse response = null;

		try {

			response = httpclient.execute(httpPost);
			StatusLine status = response.getStatusLine();
			int state = status.getStatusCode();
			if (state == HttpStatus.SC_OK) {
				HttpEntity responseEntity = response.getEntity();
				String jsonString = EntityUtils.toString(responseEntity);
				return jsonString;
			} else {
				logger.error("请求返回:" + state + "(" + url + ")");
			}
		} catch (Exception e) {
			logger.error("获取企业微信凭证:" + e.getMessage(), e);
			e.printStackTrace();
		} finally {
			if (response != null) {
				try {
					response.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			try {
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}
}

 

 

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
如果你想在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. 在获取用户信息时,需要保证授权作用域的正确性和权限的足够性。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值