亚洲视频二区I天堂网av 在线I丰满人妻AV一区二区三I088精品在线观看视频IAV在线网站免费I亚洲人成影院在线I91精品91久久久777777I131M久I日日摸日日

027-81331413

微信小程序獲取openid

發布時間:2021-01-02 瀏覽:3584

獲取微信OpenId

  1. 先獲取code

  2. 再通過code獲取authtoken,從authtoken中取出openid給前臺

  3. 微信端一定不要忘記設定網頁賬號中的授權回調頁面域名

流程圖如下


主要代碼

頁面js代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* 寫cookie */
function setCookie(name, value) {
  var Days = 30;
  var exp = new Date();
  exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
}
/* 讀cookie */
function getCookie(name) {
  var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  if (arr != null) {
    return unescape(arr[2]);
  }
  return null;
}
 
/* 獲取URL參數 */
function getUrlParams(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) {
    return unescape(r[2]);
  }
  return null;
}
 
/* 獲取openid */
function getOpenId(url) {
  var openid = getCookie("usropenid");
  if (openid == null) {
    openid = getUrlParams('openid');
    alert("openid="+openid);
    if (openid == null) {
      window.location.href = "wxcode?url=" + url;
    } else {
      setCookie("usropenid", openid);
    }
  }
}

WxCodeServlet代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
//訪問微信獲取code
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
  String state = req.getParameter("url");
  //WxOpenIdServlet的地址
  String redirect ="http://"+Configure.SITE+"/wxopenid";
  redirect = URLEncoder.encode(redirect, "utf-8");
  StringBuffer url = new StringBuffer("https://open.weixin.qq.com/connect/oauth2/authorize?appid=")
      .append(Configure.APP_ID).append("&redirect_uri=").append(redirect)
      .append("&response_type=code&scope=snsapi_base&state=").append(state).append("#wechat_redirect");
  resp.sendRedirect(url.toString());
}

WxOpenIdServlet代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//訪問微信獲取openid
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
  String code = req.getParameter("code");
  String state = req.getParameter("state");
  Result ret = new Result();
  AuthToken token = WXUtil.getAuthToken(code);
  if(null != token.getOpenid()){
    ret.setCode(0);
    log.info("====openid=="+token.getOpenid());
    Map<String,String> map = new HashMap<String,String>();
    map.put("openid", token.getOpenid());
    map.put("state", state);
    ret.setData(map);
  }else{
    ret.setCode(-1);
    ret.setMsg("登錄錯誤");
  }
  String redUrl = state+"?openid="+token.getOpenid();
  resp.sendRedirect(redUrl);
}

獲取AuthToken(WXUtil.getAuthToken(code))代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static AuthToken getAuthToken(String code){
  AuthToken vo = null;
  try {
    StringBuffer url = new StringBuffer(uri);
    url.append("appid=").append(Configure.APP_ID);
    url.append("&secret=").append(Configure.APP_SECRET);
    url.append("&code=").append(code);
    url.append("&grant_type=").append("authorization_code");
    HttpURLConnection conn = HttpClientUtil.CreatePostHttpConnection(url.toString());
    InputStream input = null;
    if (conn.getResponseCode() == 200) {
      input = conn.getInputStream();
    } else {
      input = conn.getErrorStream();
    }
    vo = JSON.parseObject(new String(HttpClientUtil.readInputStream(input),"utf-8"),AuthToken.class);
  } catch (Exception e) {
    log.error("getAuthToken error", e);
  }
  return vo;
}

HttpClientUtil類

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.huatek.shebao.util;
 
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
 
public class HttpClientUtil {
 
  // 設置body體
  public static void setBodyParameter(String sb, HttpURLConnection conn)
      throws IOException {
    DataOutputStream out = new DataOutputStream(conn.getOutputStream());
    out.writeBytes(sb);
    out.flush();
    out.close();
  }
 
  // 添加簽名header
  public static HttpURLConnection CreatePostHttpConnection(String uri) throws MalformedURLException,
      IOException, ProtocolException {
    URL url = new URL(uri);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    conn.setInstanceFollowRedirects(true);
    conn.setConnectTimeout(30000);
    conn.setReadTimeout(30000);
    conn.setRequestProperty("Content-Type","application/json");
    conn.setRequestProperty("Accept-Charset", "utf-8");
    conn.setRequestProperty("contentType", "utf-8");
    return conn;
  }
 
  public static byte[] readInputStream(InputStream inStream) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = inStream.read(buffer)) != -1) {
      outStream.write(buffer, 0, len);
    }
    byte[] data = outStream.toByteArray();
    outStream.close();
    inStream.close();
    return data;
  }
 
}

封裝AuthToken的VO類

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.huatek.shebao.wxpay;
 
public class AuthToken {
  private String access_token;
  private Long expires_in;
  private String refresh_token;
  private String openid;
  private String scope;
  private String unionid;
  private Long errcode;
  private String errmsg;
  public String getAccess_token() {
    return access_token;
  }
  public void setAccess_token(String access_token) {
    this.access_token = access_token;
  }
  public Long getExpires_in() {
    return expires_in;
  }
  public void setExpires_in(Long expires_in) {
    this.expires_in = expires_in;
  }
  public String getRefresh_token() {
    return refresh_token;
  }
  public void setRefresh_token(String refresh_token) {
    this.refresh_token = refresh_token;
  }
  public String getOpenid() {
    return openid;
  }
  public void setOpenid(String openid) {
    this.openid = openid;
  }
  public String getScope() {
    return scope;
  }
  public void setScope(String scope) {
    this.scope = scope;
  }
  public String getUnionid() {
    return unionid;
  }
  public void setUnionid(String unionid) {
    this.unionid = unionid;
  }
  public Long getErrcode() {
    return errcode;
  }
  public void setErrcode(Long errcode) {
    this.errcode = errcode;
  }
  public String getErrmsg() {
    return errmsg;
  }
  public void setErrmsg(String errmsg) {
    this.errmsg = errmsg;
  }
}


主站蜘蛛池模板: 国产v精品成人免费视频 | 超碰人人在线 | 精品一区二区三区四区五区六区 | 久久爱水蜜桃69 | 久久久久久综合网天天 | 国产精品国产三级国产专i 少妇玉梅抽搐呻吟 | 欧美久久久久久久久 | 精品视频免费 | 99久久伊人精品综合观看 | 国产精品久久久久久久久果冻传媒 | 超污视频在线观看 | 91干干| 国产亚洲3p无码一区二区 | 久久9精品区-无套内射无码 | 一节黄色片| 不卡av影片 | 男人的天堂一级片 | 漂亮人妻被中出中文字幕久久 | 五月天婷婷在线视频精品播放 | 亚洲色自偷自拍另类小说 | 人人妻人人爽人人狠狠 | 亚洲中文字慕日产2021 | 最近中文字幕免费mv在线 | 久久精品国产一区二区 | 久草在线中文888 | 日韩永久免费 | 99热成人精品热久久 | 国精产品999国精产 久久精品成人一区二区三区 | 亚洲精品精华液一区二区 | 大桥未久亚洲一区二区 | 中文字字幕在线中文无码 | 女十八毛片aaaaaaa片 | 欧美性猛交xxxⅹ乱大交小说一 | 欧美三级少妇高潮 | 综合激情丁香久久狠狠 | 一本色道久久综合狠狠躁的推荐 | 三叶草欧洲码在线 | 国产92成人精品视频免费 | 免费三级现频在线观看播放 | 亚洲永久在线观看 | 美女网站污 | 美一女一无一伦一性一交 | 国产裸体写真av一区二区 | 青青草97国产精品免费观看 | 欧美另类交人妖 | 女朋友闺蜜奶好大下面好紧视频 | 国产免费一区二区三区最新6 | 亚洲专区中文字幕 | 亚洲日本va在线视频观看 | 亚洲一区在线观看视频 | 无码专区人妻丝袜 | 久久婷婷狠狠综合激情 | 91精品国产一区二区在线观看 | 精品av无码国产一区二区 | 免费xxxx大片国产在线 | 无码少妇一区二区三区视频 | 国产一级α片 | 91视频成人 | 色婷婷av一区二区三区浪潮 | 天天欧美| 国产视频精品一区二区三区 | 变态sm天堂无码专区 | 国产成人亚洲日韩欧美 | 欧美综合久久久 | 亂倫近親相姦中文字幕 | 1000部禁片18勿进又色又爽 | 久久久精品国产99久久精品麻追 | 成人性做爰aaa片免费 | 国产精品123 | 日韩午夜一区二区三区 | 91丨porny丨国产入口 | 久久综合丁香 | 国产在线98福利播放视频 | www国产亚洲 | 色悠久久久久综合网香蕉 | 亚洲一区不卡 | 少妇人妻无码专区视频 | www久久| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | proumb性欧美在线观看 | 一本久在线 | 国产av亚洲精品久久久久李知恩 | 99热久久精品免费精品 | 精品久久久久久久久久久久 | 韩国不卡av | 在线日韩视频 | 99视频精品全部免费免费观看 | 国产免费小视频 | 好爽好黄的视频 | 黄色一级免费片 | 午夜精品久久久久久久星辰影院 | 女厕偷窥一区二区三区 | 91国内揄拍国内精品对白 | 在线观看国产精品普通话对白精品 | 国产在线精品无码av不卡顿 | 国产精品久久久久亚洲影视 | 成人午夜免费网站 | 亚洲综合性av私人影院 | 香蕉色视频 |