本文實(shí)例為大家分享了java微信掃描公眾號(hào)二維碼實(shí)現(xiàn)登陸的具體代碼,供大家參考,具體內(nèi)容如下
前提條件:
1.微信公眾平臺(tái)為服務(wù)號(hào),
2.服務(wù)號(hào)實(shí)現(xiàn)了賬號(hào)綁定功能,即將open_id 與業(yè)務(wù)系統(tǒng)中的用戶(hù)名有對(duì)應(yīng)關(guān)系
具體實(shí)現(xiàn)原理:
1.用戶(hù)訪問(wèn)業(yè)務(wù)系統(tǒng)登陸頁(yè)時(shí),調(diào)用二維碼接口,獲得二維碼的ticketid,同時(shí)將sessionid,ticketid和二維碼的seceneid保存
2.返回登陸頁(yè)時(shí),根據(jù)ticketid獲得微信二維碼
3.頁(yè)面通過(guò)ajax發(fā)送請(qǐng)求,判斷是否已經(jīng)掃描成功。
4.公眾平臺(tái)服務(wù)監(jiān)測(cè)到掃描事件,更新seceneid中掃描二維碼的業(yè)務(wù)系統(tǒng)用戶(hù)名
5.當(dāng)ajax監(jiān)測(cè)到掃描成功,并返回有業(yè)務(wù)系統(tǒng)用戶(hù)名,即可做模擬登陸!
具體代碼:
根據(jù)sceneID獲取,獲取ticketId, sceneId可以為sessionID,或者自定義的其他任何值,但必須保證不重復(fù)
注意:這里請(qǐng)求的type可以為臨時(shí)二維碼或永久二維碼,具體區(qū)別可以參看微信公眾平臺(tái)的開(kāi)發(fā)者文檔。
public static String getSceneTicket(String type,String sceneId){ WxScene scene = new WxScene(); scene.setAction_name(type); scene.setSceneId(Integer.parseInt(sceneId)); scene.setExpire_seconds(1800); String jsonScene = JSONObject.fromObject(scene).toString(); String url = WeixinContents.qr_scene_ticket_url.replaceAll("ACCESS_TOKEN", getAccessToken(WeixinContents.appid,WeixinContents.appsecret).getToken()); System.out.println(jsonScene); JSONObject jsonObject = httpRequest(url, "POST", jsonScene); int result = 0; String ticket = ""; if (null != jsonObject) { if (jsonObject.containsKey("errcode")) { result = jsonObject.getInt("errcode"); }else{ ticket = jsonObject.getString("ticket"); } } return ticket; }