Java源码示例:me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken

示例1
@Override
public WxMpUser oauth2getUserInfo(WxMpOAuth2AccessToken token, String lang) throws WxErrorException {
  if (lang == null) {
    lang = "zh_CN";
  }

  String url = String.format(WxMpService.OAUTH2_USERINFO_URL, token.getAccessToken(), token.getOpenId(), lang);

  try {
    RequestExecutor<String, String> executor = SimpleGetRequestExecutor.create(this);
    String responseText = executor.execute(url, null);
    return WxMpUser.fromJson(responseText);
  } catch (IOException e) {
    throw new RuntimeException(e);
  }
}
 
示例2
@Override
public WxMpOAuth2AccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws
  JsonParseException {
  WxMpOAuth2AccessToken accessToken = new WxMpOAuth2AccessToken();
  JsonObject accessTokenJsonObject = json.getAsJsonObject();

  if (accessTokenJsonObject.get("access_token") != null && !accessTokenJsonObject.get("access_token").isJsonNull()) {
    accessToken.setAccessToken(GsonHelper.getAsString(accessTokenJsonObject.get("access_token")));
  }
  if (accessTokenJsonObject.get("expires_in") != null && !accessTokenJsonObject.get("expires_in").isJsonNull()) {
    accessToken.setExpiresIn(GsonHelper.getAsPrimitiveInt(accessTokenJsonObject.get("expires_in")));
  }
  if (accessTokenJsonObject.get("refresh_token") != null && !accessTokenJsonObject.get("refresh_token").isJsonNull()) {
    accessToken.setRefreshToken(GsonHelper.getAsString(accessTokenJsonObject.get("refresh_token")));
  }
  if (accessTokenJsonObject.get("openid") != null && !accessTokenJsonObject.get("openid").isJsonNull()) {
    accessToken.setOpenId(GsonHelper.getAsString(accessTokenJsonObject.get("openid")));
  }
  if (accessTokenJsonObject.get("scope") != null && !accessTokenJsonObject.get("scope").isJsonNull()) {
    accessToken.setScope(GsonHelper.getAsString(accessTokenJsonObject.get("scope")));
  }
  if (accessTokenJsonObject.get("unionid") != null && !accessTokenJsonObject.get("unionid").isJsonNull()) {
    accessToken.setUnionId(GsonHelper.getAsString(accessTokenJsonObject.get("unionid")));
  }
  return accessToken;
}
 
示例3
public WxMpOAuth2AccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws
    JsonParseException {
  WxMpOAuth2AccessToken accessToken = new WxMpOAuth2AccessToken();
  JsonObject accessTokenJsonObject = json.getAsJsonObject();

  if (accessTokenJsonObject.get("access_token") != null && !accessTokenJsonObject.get("access_token").isJsonNull()) {
    accessToken.setAccessToken(GsonHelper.getAsString(accessTokenJsonObject.get("access_token")));
  }
  if (accessTokenJsonObject.get("expires_in") != null && !accessTokenJsonObject.get("expires_in").isJsonNull()) {
    accessToken.setExpiresIn(GsonHelper.getAsPrimitiveInt(accessTokenJsonObject.get("expires_in")));
  }
  if (accessTokenJsonObject.get("refresh_token") != null && !accessTokenJsonObject.get("refresh_token").isJsonNull()) {
    accessToken.setRefreshToken(GsonHelper.getAsString(accessTokenJsonObject.get("refresh_token")));
  }
  if (accessTokenJsonObject.get("openid") != null && !accessTokenJsonObject.get("openid").isJsonNull()) {
    accessToken.setOpenId(GsonHelper.getAsString(accessTokenJsonObject.get("openid")));
  }
  if (accessTokenJsonObject.get("scope") != null && !accessTokenJsonObject.get("scope").isJsonNull()) {
    accessToken.setScope(GsonHelper.getAsString(accessTokenJsonObject.get("scope")));
  }
  if (accessTokenJsonObject.get("unionid") != null && !accessTokenJsonObject.get("unionid").isJsonNull()) {
    accessToken.setUnionId(GsonHelper.getAsString(accessTokenJsonObject.get("unionid")));
  }
  return accessToken;
}
 
示例4
private WxMpOAuth2AccessToken getOAuth2AccessToken(String url) throws WxErrorException {
  try {
    RequestExecutor<String, String> executor = SimpleGetRequestExecutor.create(this);
    String responseText = executor.execute(url, null);
    return WxMpOAuth2AccessToken.fromJson(responseText);
  } catch (IOException e) {
    throw new RuntimeException(e);
  }
}
 
示例5
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
  throws IOException {

  response.setContentType("text/html;charset=utf-8");
  response.setStatus(HttpServletResponse.SC_OK);

  String code = request.getParameter("code");
  try {
    response.getWriter().println("<h1>code</h1>");
    response.getWriter().println(code);

    WxMpOAuth2AccessToken wxMpOAuth2AccessToken = this.wxMpService.oauth2getAccessToken(code);
    response.getWriter().println("<h1>access token</h1>");
    response.getWriter().println(wxMpOAuth2AccessToken.toString());

    WxMpUser wxMpUser = this.wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
    response.getWriter().println("<h1>user info</h1>");
    response.getWriter().println(wxMpUser.toString());

    wxMpOAuth2AccessToken = this.wxMpService.oauth2refreshAccessToken(wxMpOAuth2AccessToken.getRefreshToken());
    response.getWriter().println("<h1>after refresh</h1>");
    response.getWriter().println(wxMpOAuth2AccessToken.toString());

  } catch (WxErrorException e) {
    e.printStackTrace();
  }

  response.getWriter().flush();
  response.getWriter().close();

}
 
示例6
@RequestMapping("/greet")
public String greetUser(@PathVariable String appid, @RequestParam String code, ModelMap map) {

	WxMpService mpService = WxMpConfiguration.getMpServices().get(appid);

	try {
		WxMpOAuth2AccessToken accessToken = mpService.oauth2getAccessToken(code);
		WxMpUser user = mpService.oauth2getUserInfo(accessToken, null);
		map.put("user", user);
	} catch (WxErrorException e) {
		e.printStackTrace();
	}

	return "greet_user";
}
 
示例7
@Override protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

  response.setContentType("text/html;charset=utf-8");
  response.setStatus(HttpServletResponse.SC_OK);

  String code = request.getParameter("code");
  try {
    response.getWriter().println("<h1>code</h1>");
    response.getWriter().println(code);

    WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
    response.getWriter().println("<h1>access token</h1>");
    response.getWriter().println(wxMpOAuth2AccessToken.toString());

    WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
    response.getWriter().println("<h1>user info</h1>");
    response.getWriter().println(wxMpUser.toString());

    wxMpOAuth2AccessToken = wxMpService.oauth2refreshAccessToken(wxMpOAuth2AccessToken.getRefreshToken());
    response.getWriter().println("<h1>after refresh</h1>");
    response.getWriter().println(wxMpOAuth2AccessToken.toString());

  } catch (WxErrorException e) {
    e.printStackTrace();
  }

  response.getWriter().flush();
  response.getWriter().close();

}
 
示例8
@Override
public WxMpOAuth2AccessToken oauth2getAccessToken(String code) throws WxErrorException {
  String url = String.format(WxMpService.OAUTH2_ACCESS_TOKEN_URL, this.getWxMpConfigStorage().getAppId(), this.getWxMpConfigStorage().getSecret(), code);
  return this.getOAuth2AccessToken(url);
}
 
示例9
@Override
public WxMpOAuth2AccessToken oauth2refreshAccessToken(String refreshToken) throws WxErrorException {
  String url = String.format(WxMpService.OAUTH2_REFRESH_TOKEN_URL, this.getWxMpConfigStorage().getAppId(), refreshToken);
  return this.getOAuth2AccessToken(url);
}
 
示例10
@Override
public WxMpOAuth2AccessToken oauth2getAccessToken(String appId, String code) throws WxErrorException {
  String url = String.format(OAUTH2_ACCESS_TOKEN_URL, appId, code, getWxOpenConfigStorage().getComponentAppId());
  String responseContent = get(url);
  return WxMpOAuth2AccessToken.fromJson(responseContent);
}
 
示例11
@Override
public WxMpOAuth2AccessToken oauth2refreshAccessToken(String appId, String refreshToken) throws WxErrorException {
  String url = String.format(OAUTH2_REFRESH_TOKEN_URL, appId, refreshToken, getWxOpenConfigStorage().getComponentAppId());
  String responseContent = get(url);
  return WxMpOAuth2AccessToken.fromJson(responseContent);
}
 
示例12
@Override
public WxMpOAuth2AccessToken oauth2getAccessToken(String code) throws WxErrorException {
  return wxOpenComponentService.oauth2getAccessToken(appId, code);
}
 
示例13
@Override
public WxMpOAuth2AccessToken oauth2refreshAccessToken(String refreshToken) throws WxErrorException {
  return wxOpenComponentService.oauth2refreshAccessToken(appId, refreshToken);
}
 
示例14
@RabbitHandler
public void receive(WechatNotifyBean wechatNotifyBean) {
	long start = System.currentTimeMillis();
	log.info("【wxauth.wechatRabbit】:exec receive start|" + start);
	WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wechatNotifyBean.getWxMpOAuth2AccessToken();
	if (null == wxMpOAuth2AccessToken || StringHelper.isBlank(wechatNotifyBean.getWechatId())
			|| StringHelper.isBlank(wxMpOAuth2AccessToken.getOpenId())) return;
	log.info("【wxauth.wechatRabbit】:exec start");
	try {
		WxMpUser wxMpUser = null;
		String openId = wxMpOAuth2AccessToken.getOpenId();
		AuthInfo authInfo = authInfoService.findByOpenIdAndWechatId(openId, wechatNotifyBean
				.getWechatId());
		if (null == authInfo // 大于2小时
				|| System.currentTimeMillis() - authInfo.getUpdateTime().getTime() > 7200000) {
			boolean isSopeBase = wechatNotifyBean.isSopeBase();
			if (isSopeBase) {
				log.info("【wxauth.openId】静默登录");
				wxMpUser = wxService.getUserService().userInfo(openId);
			} else {
				// refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
				String refreshToken = wxMpOAuth2AccessToken.getRefreshToken();
				wxMpOAuth2AccessToken = wxService.oauth2refreshAccessToken(refreshToken);
				log.info("【wxauth.openId】主动登录");
				// 拉取用户信息(需scope为 snsapi_userinfo)
				wxMpUser = wxService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
			}

			if (null != wxMpUser) {
				if (null == authInfo) authInfo = new AuthInfo();
				authInfo.setOpenId(openId);
				authInfo.setWechatId(wechatNotifyBean.getWechatId());
				authInfo.setNickName(WebUtils.buildURLEncoder(EmojiUtils.toHtml(wxMpUser
						.getNickname())));
				authInfo.setHeadImgUrl(wxMpUser.getHeadImgUrl());
				authInfo.setCity(wxMpUser.getCity());
				authInfo.setProvince(wxMpUser.getProvince());
				authInfo.setLanguage(wxMpUser.getLanguage());
				authInfo.setRemark(wxMpUser.getRemark());
				authInfo.setSexDesc(wxMpUser.getSexDesc());
				authInfo.setSex(wxMpUser.getSex());
				authInfo.setCountry(wxMpUser.getCountry());
				authInfo.setRefreshToken(wxMpOAuth2AccessToken.getRefreshToken());
				if (null == authInfo.getCreateTime()) authInfo.setCreateTime(new Date());
				authInfo.setUpdateTime(new Date());
				authInfoService.saveOrUpdate(authInfo);
			}
		}
		log.info("【wxauth.wechatRabbit】:openId|" + openId);
	} catch (WxErrorException ex) {
		ex.printStackTrace();
		log.info("【wxauth.wechatRabbit】exception:" + ex.getError().getErrorMsg());
	}
	log.info("【wxauth.wechatRabbit】:exec finished 耗时:" + (System.currentTimeMillis() - start));
}
 
示例15
/**
 * <pre>
 * 用code换取oauth2的access token
 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
 * </pre>
 */
WxMpOAuth2AccessToken oauth2getAccessToken(String code) throws WxErrorException;
 
示例16
/**
 * <pre>
 * 刷新oauth2的access token
 * </pre>
 */
WxMpOAuth2AccessToken oauth2refreshAccessToken(String refreshToken) throws WxErrorException;
 
示例17
/**
 * <pre>
 * 用oauth2获取用户信息, 当前面引导授权时的scope是snsapi_userinfo的时候才可以
 * </pre>
 *
 * @param lang zh_CN, zh_TW, en
 */
WxMpUser oauth2getUserInfo(WxMpOAuth2AccessToken oAuth2AccessToken, String lang) throws WxErrorException;
 
示例18
/**
 * <pre>
 * 验证oauth2的access token是否有效
 * </pre>
 */
boolean oauth2validateAccessToken(WxMpOAuth2AccessToken oAuth2AccessToken);
 
示例19
WxMpOAuth2AccessToken oauth2getAccessToken(String appid, String code) throws WxErrorException; 
示例20
WxMpOAuth2AccessToken oauth2refreshAccessToken(String appid, String refreshToken) throws WxErrorException;