扫描别人微信公众号扫描二维码后才可以购买推荐文章中其公众号二维码时登录超时是怎么回事?

(饵块食光)
(诚实可爱小郎君)
(启蒙课程老师)
第三方登录:微信公众号二维码在哪里? 查看别人公众微信号二维码的教程
互联网 & 发布时间: 10:25:05 & 作者:佚名 &
微信公众号二维码在哪里?有很喜欢的公众号,想看看这个公众号的二维码,该怎么查看?下面我们就来看看查看别人公众微信号二维码的教程,需要的朋友可以参考下
自己的微信公众号二维码可以在后台下载,但是在微信公众号管理者没有分享公众号微信二维码的情况下,如何查看和下载其他二维码呢。
1、打开手机微信,打开进入订阅号。
2、找到想要查看二维码的微信公众号,这里用一个订阅号举例。
3、进入公众号后,点击右上角图标。
4、记下这个微信公众号的微信号。
5、在打开浏览器,在网页地址栏输入open.weixin.qq.com/qr/code/?username=微信号(微信号这里填刚刚记下的微信号)并回车,就会出现公众号的二维码,右键另存为图片就可以下载该二维码。
注意事项:
查找的二维码必须是公众号的,个人微信二维码的不用这个方法。
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容博客分类:
前提条件:
1.微信公众平台为服务号,
2.服务号实现了账号绑定功能,即将open_id 与业务系统中的用户名有对应关系
具体实现原理:
1.用户访问业务系统登陆页时,调用二维码接口,获得二维码的ticketid,同时将sessionid,ticketid和二维码的seceneid保存
2.返回登陆页时,根据ticketid获得微信二维码
3.页面通过ajax发送请求,判断是否已经扫描成功。
4.公众平台服务监测到扫描事件,更新seceneid中扫描二维码的业务系统用户名
4.当ajax监测到扫描成功,并返回有业务系统用户名,即可做模拟登陆!
具体代码:
根据sceneID获取,获取ticketId,
sceneId可以为sessionID,或者自定义的其他任何值,但必须保证不重复
注意:这里请求的type可以为临时二维码或永久二维码,具体区别可以参看微信公众平台的开发者文档。
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");
ticket = jsonObject.getString("ticket");
2.扫描二维码登陆的几个action
@ActionKey("/")
@ClearInterceptor(ClearLayer.ALL)
public void index() {
LoginUser u = (LoginUser)getSessionAttr("LoginUser");
setAttr("root", this.getRequest().getContextPath());
if(null==u){
setAttr("ticketId",wxTicket());
render("/WEB-INF/login.html");
redirect("/index");
private String wxTicket() {
int sceneId = Db.queryInt("select SEQ_WX_SCENE.Nextval from dual");
String ticketId = WeixinHttpUtils.getSceneTicket("QR_SCENE", sceneId+"");
setSessionAttr("ticketId",ticketId);
setSessionAttr("sessionId",this.getRequest().getSession().getId());
String sql = "insert into wx_scence_logon(id,sessionid,ticketid,SCENCE_ID) values(sys_guid(),?,?,?)";
Db.update(sql,this.getRequest().getSession().getId(),ticketId,sceneId);
return ticketId;
@ActionKey("/cxTicket")
@ClearInterceptor(ClearLayer.ALL)
public void cxTicket(){
String ticketId = getPara("ticketId");
String sessionid = getPara("sessionId");
while(i&10){
Record r = Db.findFirst("select id from wx_scence_logon l,wx_user u where u.open_id = l.open_id and l.ticketid = ? and l.sessionId = ?",ticketId,sessionid);
if(r!=null&&StringUtils.isNotEmpty(r.getStr("id"))){
setAttr("success","1");
setAttr("logonId",r.getStr("id"));
setAttr("success","0");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
render(new JsonRender().forIE());
@ActionKey("/ticketLogon")
@ClearInterceptor(ClearLayer.ALL)
public void ticketLogon(){
String id = getPara("ticketId");
Record r = Db.findFirst("select user_id as username from wx_scence_logon l,wx_user u where u.open_id = l.open_id and l.id = ?",id);
if(r!=null&&StringUtils.isNotEmpty(r.getStr("username"))){
String username = r.getStr("username");
LoginUser user = LoginUser.dao.findFirst("select user_id,xm,department_id,departmentname,userpw from gy_user u where u.username = ? and u.userlockstate = '1' ",username);
String permSql = "select distinct p.* from hr_user_role t,hr_role r,hr_role_perm m,hr_perms p where t.role_id = r.id and m.role_id = r.id and m.perm_id = p.id and user_id = ?";
List&Record& perms = Db.find(permSql,new Object[]{user.getStr("user_id")});
if(perms!=null&&perms.size()&0){
this.getSession().removeAttribute("USER_PERMS");
setSessionAttr("USER_PERMS",perms);
getRequest().getSession().setAttribute("LoginUser",user);
this.redirect("/main");
3.
登陆页面
二维码显示
&img src="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=${ticketId!}" width="250px"/&
定时查询扫描状态
function wxCxTikcet(){
$.getJSON("${root!}/cxTicket",{ticketId:"${ticketId}",sessionId:"${sessionId}"},function(data){
//alert(data.success=="1");
if(data.success=='1'){
_logon(data.logonId);
//window.location.href="${root!}/ticketLogon/"+data.logonId;
var t_int = window.setInterval("wxCxTikcet()",5000);
4.公众平台代码
}else if(eventType.equalsIgnoreCase(MessageUtil.EVENT_TYPE_SCAN)){
String scene_id = eventK
if(Integer.parseInt(eventKey)==0){
respContent = "扫描参数出错!请刷新重试!";
respContent = getSceneContent(scene_id,fromUserName);
private static String getSceneContent(String sceneId,String fromUserName){
String sql ="select * from WX_SCENCE_LOGON
where scence_id = ?";
Record r = Db.findFirst(sql,sceneId);
if(r!=null){
String updateSql = "update wx_scence_logon set open_id = ? where id = ?";
Db.update(updateSql,fromUserName,r.getStr("id"));
return "您已成功登陆***系统!";
说明,框架使用jfinal 1.5
浏览: 105689 次
来自: 武汉
郑云飞 写道你好,请问,按照你的代码,为什么Android手机 ...
学习了。。。
没有开启开发模式可以使用此接口发送模板消息吗????急求!!
你好,请问,按照你的代码,为什么Android手机可以收到发送 ...
有办法吗,我觉得扫描过后要是直接知道是哪个的二维码,多好
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'当前位置:
微信公众号文章尾部二维码图片
原创共享素材
编号:上传时间:大小:5.636 M
分辨率:72dpi
尺寸:0像素 格式:PSD (CS6)颜色:RGB
关&键&词:微信公众号 文章尾部 长按识别 指纹识别 二维码 洛克汉堡
设计 PSD分层素材 PSD分层素材 72DPI PSD
作品描述:微信公众号 文章尾部二维码 长按识别 指纹识别 二维码 洛克汉堡
&昵图网所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系 。
商用正版图片&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
discuz绑定微信公众号后,微信扫二维码登录转发实现
摘要:由于微信公众号用Java开发,故discuz绑定微信公众号之后,在discuz首页进行微信二维码扫码登录时,微信处理的结果会到tomcat里面,不能转接到discuz,实现不了扫描登录。由于本人没学过php,所以瞎折腾了很久。1、在微信公众号平台里面,把原先设置的公众号token和url换成discuz管理员界面里微信设置中提供的token和url,这样的目的就能把微信扫码登入直接给discuz自己处理,而不经过tomcat,这样实现的情况下discuz微信用户对应的open
由于微信公众号用Java开发,故discuz绑定微信公众号之后,在discuz首页进行微信二维码扫码登录时,微信处理的结果会到tomcat里面,不能转接到discuz,实现不了扫描登录。
由于本人没学过php,所以瞎折腾了很久。
1、在微信公众号平台里面,把原先设置的公众号token和url换成discuz管理员界面里微信设置中提供的token和url,这样的目的就能把微信扫码登入直接给discuz自己处理,而不经过tomcat,这样实现的情况下discuz微信用户对应的openid和微信公众号的openid是不一致。但是没事,因为这样做的目的是为了获取discuz登入扫码的数据,为下文的数据模拟做铺垫。
2、因为要获取数据,所以我就在本地部署了php环境,安装了Zend Studio编辑工具。因为没学过Php,里面流程怎么跑的还是一头雾水,用了很蠢的办法来跟踪,”file_put_contents('log.txt','111- ',FILE_APPEND);”,将信息输出到discuz项目下的log.txt文件里。接着用微信扫描discuz首页的二维码,最终跟踪到扫码成功返回的数据在wechat.lib.class.php下的accessDataPush()方法里,file_put_contents('log.txt','--0000 '.$postdata.' 0000---',FILE_APPEND);打印出扫码成功后要转发给discuz的数据
gQH48DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL21UOFkwMGJsTVFGSWxlQVUtaEVPAAIEmfhhVwMECAcAAA==
oys2GxKWgpvePu3fT69KhMBaDSqU
3、利用FireFox火狐浏览器的RESTClient插件来模拟数据发送,目的url为discuz管理界面微信设置里的url。以post发送的时候,发现返回结果是404。在wechat.lib.class.php里面恰好有个404,对应的是signature验证失败导致的,所以注释_checkSignature()相关的处理代码。
private function accessDataPush() { file_put_contents('log.txt','accessDataPush-- ',FILE_APPEND); if (!$this-&_checkSignature()) { file_put_contents('log.txt',' --
-- ',FILE_APPEND); /* if (!headers_sent()) { header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); } $this-&_activeHook('404'); */ } $postdata = file_get_contents(&php://input&); if ($postdata) { if (!$this-&_checkSignature()) { file_put_contents('log.txt',' --
-- ',FILE_APPEND); // } file_put_contents('log.txt','--0000 '.$postdata.' 0000---',FILE_APPEND); $postObj = simplexml_load_string($postdata, 'SimpleXMLElement', LIBXML_NOCDATA); $postObj = $this-&_handlePostObj($postObj); $this-&_activeHook('receiveAllStart', $postObj); if (isset($postObj['event'])) { $hookName = 'receiveEvent::' . $postObj['event']; } else { $hookName = 'receiveMsg::' . $postObj['type']; } $this-&_activeHook($hookName, $postObj); $this-&_activeHook('receiveAllEnd', $postObj); } elseif (isset($_GET['echostr'])) { $this-&_activeHook('accessCheckSuccess'); if (!headers_sent()) { header('Content-Type: text/plain'); } echo preg_replace('/[^a-z0-9]/i', '', $_GET['echostr']); } }4、这里获取验证信息有个小窍门,注释file_put_contents('log.txt','--0000 '.$postdata.' 0000---',FILE_APPEND);语句后面的代码,这样微信扫描二维码的时候到达打印信息之后就不会再往下执行,接着把打印出的信息复制到Firefox浏览的RESTClient插件的post中,点击send之后发现在discuz首页账号登录成功,登录会有一两秒的延迟。到达这里基本上完成了,接下去就是要在tomcat中把微信扫描过来的信息转发给discuz了。
5、在微信公众平台中把token和url改回公众号的。在java后台微信信息处理模块中,把接受到的request内容(xml格式)解析成map保存,然后把map转化为discuz指定的xml格式,转发url为discuz里微信设置的url。
// xml请求解析 Map
requestMap = MessageUtil.parseXml(request);
/** * 解析微信发来的请求(XML) * * @param request * @return * @throws Exception */ @SuppressWarnings(&unchecked&) public static Map
parseXml(HttpServletRequest request) throws Exception { // 将解析结果存储在HashMap中 Map
map = new HashMap
(); // 从request中取得输入流 InputStream inputStream = request.getInputStream(); // 读取输入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List
elementList = root.elements(); // 遍历所有子节点 for (Element e : elementList) map.put(e.getName(), e.getText()); // 释放资源 inputStream.close(); inputStream = }
StringBuffer sb = new StringBuffer(); sb.append(&
&); MessageUtil.mapToXMLTest2(requestMap,sb); sb.append(&
&); String xml = sb.toString(); /** * 获取discuz微信登录转发信息 * @param map * @param sb */ public static void mapToXMLTest2(Map map, StringBuffer sb) { Set set = map.keySet(); for (Iterator it = set.iterator(); it.hasNext();) { String key = (String) it.next(); Object value = map.get(key); if (null == value) value = &&; if (value.getClass().getName().equals(&java.util.ArrayList&)) { ArrayList list = (ArrayList) map.get(key); sb.append(&&& + key + &&&); for (int i = 0; i & list.size(); i++) { HashMap hm = (HashMap) list.get(i); mapToXMLTest2(hm, sb); } sb.append(& &); } else { if (value instanceof HashMap) { sb.append(&&& + key + &&&); mapToXMLTest2((HashMap) value, sb); sb.append(& &); } else { if(key.equals(&CreateTime&)){ sb.append(&&& + key + &&& + value + & &); }else{ sb.append(&&& + key + &&& + value + & &); } } } } }
new HttpUtil().sendPostXML(Constants.weixinurl+&/bbs/api/mobile/?module=wechat&, xml);public void sendPostXML(String urlStr, String xml) { try { URL url = new URL(urlStr); URLConnection con = url.openConnection(); con.setDoOutput(true); con.setRequestProperty(&Pragma:&, &no-cache&); con.setRequestProperty(&Cache-Control&, &no-cache&); con.setRequestProperty(&Content-Type&, &text/xml&); OutputStreamWriter out = new OutputStreamWriter(con .getOutputStream()); out.write(new String(xml.getBytes(&ISO-8859-1&))); out.flush(); out.close(); BufferedReader br = new BufferedReader(new InputStreamReader(con .getInputStream(),&UTF-8&)); String line = &&; String lines = &&; for (line = br.readLine(); line != line = br.readLine()) { System.out.println(line); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
这样就大功告成,真心不容易,第一次接触php,还要把它去tomcat相结合。新手第一次写!!!
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
discuz绑定微信公众号后,微信扫二维码登录转发实现相关信息,包括
的信息,所有discuz绑定微信公众号后,微信扫二维码登录转发实现相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International

我要回帖

更多关于 扫描二维码关注微信公众号登录页面 的文章

 

随机推荐