java企业号code,企业号授权(含代码)/**
* 根据code获取userId后跳转到需要带⽤户信息的最终页⾯
* @param request
* @param code 获取重定向到⾃⼰设置的URL中code参数
* @return
*/
@ResponseBody
@RequestMapping(value = { "/oauth2url" })
@CrossOrigin
public R Oauth2MeUrl(HttpServletRequest request, @RequestParam String code) {
R r = new R();
UserMDLVo userMDLVo = new UserMDLVo();
UserDO userDO = new UserDO();
String openId=oAuth2Service.Oauth2MeUrl(request, code);
if(null==openId||"".equals(openId)){
userMDLVo.setOpenId("");
r.put("Msg", "openId为空!");
r.put("code", 0);//code⽆效查不出openID
}else{
userDO = userService.findUserListByOpenId(openId);
if(null==userDO || "".equals(userDO) ){
r.put("code", 2);//openID存在,⽤户不存在,进⾏验证码登录
r.put("openId", openId);
r.put("msg", "⽤户不存在");
}else{
r.put("openId", openId);
r.put("code", 1);
r.put("userId", UserId());
r.put("msg", "⽤户存在");//openID存在,⽤户存在,进⼊系统
}
}
return r;
}
/
**
*
* @Title: Oauth2MeUrl
* @Description: 根据code获取openId
* @param code
* @param request
* @param
* @return String
* @throws
* @author
* @date 2018年7⽉22⽇ 下午2:30:13
*/
@Override
public String Oauth2MeUrl(HttpServletRequest request, String code) {
String openId="";
//获取企业号AccessToken
AccessToken accessToken = AccessToken(Constants.CORPID, Constants.Secret); //获取request对象关联的session对象,如果没有session,则返回⼀个新的session
HttpSession session = Session();
if (accessToken != null && Token() != null) {
//将AccessToken存储到session中
session.setAttribute("accessToken", accessToken);
//调⽤接⼝获取openId openId为空
openId = Token(), code, Constants.AGENTID); if (openId != null && openId.length()!=0) {
// 将openId存储到session中
session.setAttribute("openId", openId);
//根据openId查⽤户id
return openId;
}
}
return openId;
}
/**
* 企业号调⽤类 {"errcode":0,"errmsg":"ok"} 此结果表⽰调⽤⽅法成功返回
孔舒航整容
*
* @author xumy
*
*/
public class QiYeUtil {
/**
* 获取企业号AccessToken
*
* @param CorpID
* @param CorpSecret
* @return
*/
public static AccessToken getAccessToken(String CorpID, String CorpSecret) { AccessToken accessToken = AccessToken(CorpID,CorpSecret, 1); System.out.println("accessToken=" + accessToken);
return accessToken;
}
/**
* OAuth2验证接⼝根据code获取成员信息
* @param token
* @param code
* @param AgentID
* @return
*/
public static Result oAuth2GetUserByCode(String token, String code,
int AgentID) {
Result result = new Result();
//根据code获取成员信息
JSONObject jo = UserByCode(token, code, AgentID);
if (jo != null && jo.size()!=0) {
try {
//getString中的参数为空,会抛出异常
String userId = jo.getString("UserId");
if (userId != null && userId.length() > 0) {
result.setErrmsg("");
result.setErrcode("0");
result.setObj(userId);
} else {
result.String("errmsg"));
result.String("errcode"));
}
} catch (Exception e) {
result.setErrmsg("accessToken 超时......");
阿门阿前一棵葡萄树
result.setErrcode("42001");
}
}
return result;
}
/**
* 构造带员⼯⾝份信息的URL
*
* @param corpid
* 企业id
* @param redirect_uri
* 授权后重定向的回调链接地址,请使⽤urlencode对链接进⾏处理
* @param state
* 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值
* @return
*/
public static String oAuth2Url(String corpid, String redirect_uri) { try {
//解决接⼝GET请求中⽂参数的问题
redirect_uri = de(redirect_uri, "utf-8"); } catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//state参数
String oauth2Url = "open.weixin.qq/connect/oauth2/authorize?appid=" + corpid + "&redirect_uri=" + redirect_uri
唐季礼+ "&response_type=code&scope=snsapi_base&state=xumy#wechat_redirect";
return oauth2Url;化学工程就业前景
}
/**
* 调⽤接⼝获取⽤户信息
*
* @param token
* @param code
* @param agentId
* @return
* @throws SQLException
old先本人照片
* @throws RemoteException
*/
public static String getMemberGuidByCode(String token, String code, int agentId) {
//根据code获取成员信息,Obj()返回⽤户id
Result result = QiYeUtil.oAuth2GetUserByCode(token, code, agentId);
if (Errcode() == "0") {
if (Obj() != null) {
// 此处可以通过授权⽤code的Userid查询⾃⼰本地服务器中的数据
Obj();
}
}
return "";
}
}
package com.bootdomon.domain;
public class AccessToken {
// 获取到的凭证
private String token;
// 凭证有效时间,单位:秒
private int expiresIn;
public String getToken() {