精华内容
下载资源
问答
  • 1:获取token值,微信获取公众号token值需要公众号的appid和secret 这两个值是微信提供的,是不会变的 获取token值地址 String strUrl = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_cred...

    今天做了一个关于微信的接口,由于以前没有接触过关于微信的问题,现在碰到了查了很多资料,下面总结一下

    1:获取token值,微信获取公众号token值需要公众号的appid和secret 这两个值是微信提供的,是不会变的
    获取token值地址
    String strUrl = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret=”+secret;
    通过调用这个借口获取token值。
    具体调用方法:
    下面是我自己封装的调用借口

    public class RpcHttpUtil {
    	private static final CloseableHttpClient httpclient = HttpClients.createDefault();
    	 /**
         * 发送HttpGet请求
         * @param url
         * @return
         */
        public static String sendGet(String url) {
            HttpGet httpget = new HttpGet(url);
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(httpget);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            String result = null;
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    result = EntityUtils.toString(entity);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
        public static String sendPost(String url) {
            HttpPost httpPost = new  HttpPost(url);
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(httpPost);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            String result = null;
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    result = EntityUtils.toString(entity);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
    }
    

    直接传入url就可以获取到token,当然微信返回值是json形式,那么我们就需要将token值取出来
    具体方法 RpcHttpUtil是我封装的类名
    String s = RpcHttpUtil.sendGet(strUrl);
    JSONObject jsonObject = JSONObject.parseObject(s);
    String access_token = jsonObject.getString(“access_token”);
    System.out.println(access_token);
    这样就可以取到token值了。
    获取到token值我们就可以调用微信的接口了,微信官网上api写的已经很清楚了,下面是我个人的一些总结
    首先我们要先创建一个模板,模板可以由微信官网创建,这里就不介绍了,每个公司都有自己的模板,如果是有模板的话直接调用模板id就可以了
    调用模板推送接口,下面也是我自己封装的类:

    public class TuiSongUtil {
    	public static String sendTemplate(String openId,String carnum,String info,String accessToken,String date) {
    		String tepUrl = "http://api.weixin.qq.com/cgi-bin/message/template/send?access_token="
    				+ accessToken;
    		//System.out.println("token="+accessToken);
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		HttpPost httpPost = new HttpPost(tepUrl);
    		// 装配post请求参数
    		JSONObject json = new JSONObject();
    		json.put("touser", "需要推给某人的opid");
    		json.put("template_id", "模板id");
    		json.put("url", "需要跳转的ulr(写不写都可以)");
    		JSONObject dataJson = new JSONObject();
    		TemplateData first = new TemplateData();
    		first.setValue("您好,您的爱车"+carnum+ "今日限行");
    		first.setColor("#173177");
    		dataJson.put("first",first);
    		TemplateData keyword1 = new TemplateData();
    		keyword1.setValue(info);
    		keyword1.setColor("#173177");
    		dataJson.put("keyword1",keyword1);
    		TemplateData keyword2 = new TemplateData();
    		keyword2.setValue(date);
    		keyword2.setColor("#173177");
    		dataJson.put("keyword2",keyword2);
    		TemplateData keyword3 = new TemplateData();
    		keyword3.setValue("07:00~19:00");
    		keyword3.setColor("#173177");
    		dataJson.put("keyword3",keyword3);
    		TemplateData keyword4 = new TemplateData();
    		keyword4.setValue("请合理安排驾车出行。");
    		keyword4.setColor("#173177");
    		dataJson.put("keyword4",keyword4);
    		TemplateData remark = new TemplateData();
    		remark.setValue("提供的数据不能作为您出行的依据,请谨慎参考。");
    		remark.setColor("#FF0000");
    		dataJson.put("remark",remark);
    		net.sf.json.JSONObject json_test = net.sf.json.JSONObject.fromObject(dataJson);
    		json.put("data", dataJson);
    		String resultStr = "发送失败";
    		try {
    			StringEntity myEntity = new StringEntity(json.toJSONString(), ContentType.APPLICATION_JSON);
    
    			// 设置post求情参数
    			httpPost.setEntity(myEntity);
    			HttpResponse httpResponse = httpClient.execute(httpPost);
    			System.out.println(httpResponse.getStatusLine().getStatusCode());
    			if (httpResponse.getStatusLine().getStatusCode() == 200) {
    				// 发送成功
    				String resutlEntity = EntityUtils.toString(httpResponse.getEntity());
    				System.out.println(resutlEntity);
    				return resultStr;
    			} else {
    				// 发送失败
    				return resultStr;
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (httpClient != null) {
    					// 释放资源
    					httpClient.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		return resultStr;
    	}
    }
    

    下面是创建的实体类

      public class TemplateData {
        	private String value;
        	private String color;
        	public String getValue() {
        		return value;
        	}
        	public void setValue(String value) {
        		this.value = value;
        	}
        	public String getColor() {
        		return color;
        	}
        	public void setColor(String color) {
        		this.color = color;
        	}
        	
        }
    

    这样模板推送就完成了

    展开全文
  • 主要介绍了微信公众号获取access_token的方法,结合实例形式分析了java实现微信公众号获取access_token的相关原理、实现方法及操作注意事项,需要的朋友可以参考下
  • 关于微信公众号获取token的学习总结

    千次阅读 2017-12-21 15:13:47
    最近被一个前端获取token的问题困扰了很久,在论坛看了很多关于token的文章,也跟一些前辈进行了一系列的讨论,最后发现把原本很简单的一个问题复杂化了。今天写下这篇笔记,作为给自己的一个提醒,也希望帮到有需要...

    最近被一个前端获取token的问题困扰了很久,在论坛看了很多关于token的文章,也跟一些前辈进行了一系列的讨论,最后发现把原本很简单的一个问题复杂化了。今天写下这篇笔记,作为给自己的一个提醒,也希望帮到有需要的朋友们。


    token的中文有人翻译成 “令牌”,顾名思义,你拿着这个令牌,才能过一些关卡。


    使用基于 token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

    1、客户端使用用户名跟密码请求登录;

    2、服务端收到请求,去验证用户名与密码;

    3、验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端;

    4、客户端收到 token 以后可以把它存储起来,比如放在 cookie 里或者 localstorage 里;

    5、客户端每次向服务端请求资源的时候需要带着服务端签发的 Token;

    6、服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据;



    token的获取很简单,下面是我的一些代码:


    首先我们要从url中截取token,并存储到localstorage中。为了方便这里我封装成了函数,在需要获取token的位置调用这个方法:




    获取到的token要放在请求头中:






    展开全文
  • 微信公众号开发获取access_token
    <?php
    
    //设置常量,设置ID与SECRERT的值
    //定义一个APPID的常量?开发者的ID
    define ('APP_ID','************************');
    //定义一个secret?开发者的密钥

    define('APP_SECRET','***********************************');

    get_token();//即可获得access_token;

    function get_token(){
    //使用CURL来向指定的TECENT 服务器的API接口发送指定信息啊
    $ch=curl_init();
    $url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.APP_ID.'&secret='.APP_SECRET;
    //针对这样一个url请求,所对应的链接是这样的一个地址.
    curl_setopt($ch, CURLOPT_URL, $url);
    //将请球的结果在exec的时候赋值给参数,而不是直接输出来的
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //curl中的header头对用户是不可以见到的
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $output=curl_exec($ch);
    curl_close($ch);
    $obj=json_decode($output,true);    
        return $obj['access_token'];
    }

    ?>

    //想要获得access_token必须在绑定域名的服务器空间环境下运行才可以,在本地、为绑定域名备案的空间运行都是无法获取到access_token 的。所以建议各位申请新浪的SAE作为开发环境,因为简单易用,而且花费极低!

    展开全文
  • 微信公众号验证Token

    2019-11-25 14:18:14
    前几天开发了微信公众号,趁今天有时间,总结一下。...2.令牌Token问题,在微信公众号基本配置里面可以随意填写,但是在服务端,也就是你的后台接口程序中的Token必须对应! 3.消息加解密密钥,这个在公众号可以...

    前几天开发了微信公众号,趁今天有时间,总结一下。

    注意几点:

    1.服务器地址URL这是要配置你的域名加你验证Token的接口路径,记住,是完整路径!。如果是通过了穿透,那么就是127.0.0.1/端口/Controller路径/方法路径!

    2.令牌Token问题,在微信公众号基本配置里面可以随意填写,但是在服务端,也就是你的后台接口程序中的Token必须对应!

    3.消息加解密密钥,这个在公众号可以弄成自动生成32的密钥。

    4.加解密方式,本人用的是明文。

    5.Token每天获取数量有限制,每次获取有效期是7200,也就是2小时,记得用容器保存。可以存储在Redis,设置一个有效期7200!

    以下是代码:

    1.工具类Httprequests

    public static String  sendGet (String url,String param) {
            String result ="";
            BufferedReader in  =null;
            try {
                String urlNameString = url +"?" +param;
                System.out.println("发送的链接请求:"+urlNameString);
                URL reaurl = new URL(urlNameString);
    
                URLConnection connection  = reaurl.openConnection();
    
                //设置通用
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "keep-Alive");
                connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    
                //建立实际的连接
                connection.connect();
    
                Map<String, List<String>> map = connection.getHeaderFields();
                //定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }
    
    
        /**
         * 向指定 URL 发送POST方法的请求
         * @param url 发送请求的 URL
         * @param param 参数
         * @return String 所代表远程资源的响应结果
         */
        public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
    
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
    
        /**
         * 拿到ip
         * @param req request作用域:
         * @return String
         */
        public static String getRemoteIP(HttpServletRequest req) {
            String ip = req.getHeader("X-Real-IP");
    
            if (ip == null || ("").equals(ip)) {
                ip = req.getRemoteAddr() == null ? "127.0.0.1" : req.getRemoteAddr();
            }
            return ip;
        }
    
        /**
         *  生成
         * @param num 参数
         * @return String
         */
        public static String getPamens(Integer num){
            String base = "abcdefghijklmnopqrstuvwxyz0123456789";
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < num; i++) {
                int number = random.nextInt(base.length());
                sb.append(base.charAt(number));
            }
            return sb.toString();
        }
    

    2.写一个Service接口,返回Map类型。

     /**
         * 获取微信Token
         * @return
         */
         Map<String, Object> accessToken();
    

    3.实现接口 lmpl

      /**
         * 拿到Token
         * @return
         */
        @Override
        public Map<String, Object> accessToken() {
            String param="grant_type="+ WxModel.grant_type+"&appid="+WxModel.appid+"&secret="+WxModel.wxspSecret;
            //获取接口凭证
            String sendGet= Httprequests.sendGet(WxModel.select_access_token,param);
            System.out.println("发送git请求的返回值:"+sendGet);
            JSONObject json = JSONObject.parseObject(sendGet);
            String access_token=json.getString("access_token"); //凭证
            System.out.println("获取的access_token:"+access_token);
            int expires_in= json.getInteger("expires_in"); //凭证有效时间,单位:秒
            System.out.println("有效的时间:"+expires_in);
            System.out.print("获取凭证成功");
            System.out.println("返回的数据:"+access_token);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("access_token", access_token);
            map.put("expires_in", expires_in);
            RedisUtil.setex("access_token",access_token,7200 );
            return map;
        }
    

    4.关于WxModel,这个是要你公众号的grant_type,appid,wxspSecret,你可以登录你的公众号进行查看。在首页就可以看到

    5 .Controller,如果运行报请求要用GET请求,那么就把POST换成GET。

    /**
         * 验证token
         * @param request
         * @param response
         * @return
         */
        @PostMapping(value= {"/getProcessRequest"})
        @ResponseBody
        public String getProcessRequest(HttpServletRequest request, HttpServletResponse response) {
            boolean isGet=request.getMethod().toLowerCase().equals("get");
            System.out.println(isGet);
            System.out.println("方法是-------"+isGet);
             // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
                String signature = request.getParameter("signature");
                // 时间戳
                String timestamp = request.getParameter("timestamp");
                // 随机数
                String nonce = request.getParameter("nonce");
                // 随机字符串
                String echostr = request.getParameter("echostr");
    
                PrintWriter out = null;
                try {
                    out = response.getWriter();
                    // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败
                    if (SignUtil.checkSignature(signature, timestamp, nonce)) {
                        System.out.println("成功");
                        out.print(echostr);
                        out.flush();  //必须刷新
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    out.close();
                }
        }
    

    总结完毕,在此要感谢我一个同学,他开发过这方面,让我少爬了很多坑。代码是完整的,希望可以帮助到大家。

    不懂可以加QQ群: 914084240

    展开全文
  • 一般我们在进行微信公众号开发的时候,都需要用到access_token,但是具体的获取及其使用方式如何呢?下面展示一种获取的方式(具体的微信公众号申请和配置,请参考开放文档,具体在这里就不详细说明了),首先,可以...
  • 关注微信公众号获取tokenUrl的地址为 https://api.weixin.qq.com/cgi-bin/token 关注微信公众号获取ticket的地址为 https://api.weixin.qq.com/cgi-bin/ticket/getticket 不能获取手机号 方法太麻烦 /-+/-+/-+/-+/-+...
  • 关于微信公众号开发token验证以及跟服务器连接 微信公众号官网:https://mp.weixin.qq.com 申请完公众号后进入开发栏 在服务器配置中的服务器地址输入你在阿里云或者腾讯云上申请的域名例如...
  • 主要介绍了PHP cURL获取微信公众号access_token的实例,需要的朋友可以参考下
  • 爬取微信公众号cookie获取token获取

    千次阅读 2019-06-09 15:12:38
    使用selenium自动化工具,获取微信公众号平台的cookies以及加密token 把cookie与token用在requests函数中模拟浏览器访问微信公众号服务中的素材管理 在素材管理中搜索,公众号名称与文章,获取文章地址与保存 使用...
  •  微信公众号获取微信用户信息需要的条件:  1.获取用户openId。可以在用户绑定APP的时候用code换取,也可以在用户关注公众号的时候获取,或者小程序授权时获取。微信公众号code换取openId  2.获取该微信公众号 ...
  • 微信access_token公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。 公众号可以使用AppID和AppSecret调用本...
  • 微信公众号开发-开发环境搭建并通过java代码获取微信access_token
  • 什么是access_token ...access_token公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_toke...
  • springboot项目,h5页面通过微信公众号获取微信用户信息 最近本人有一个项目需求,微信公众号里点击一个菜单进入一个商城购物系统。 对于在微信公众号还是小白的我来说难度有点大,但是做完后发现也就这样,用多了就...
  • 1.微信公众号网站扫描登录
  • 微信公众号获取token详解

    千次阅读 2019-09-02 18:33:20
    beforeMount() { //判断是否为微信环境 --- 两行代码 var ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) ==... // 在本地获取token,如果token为空或者为null或者为null的时候,就要请...
  • access_token公众号的全局唯一...access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 公众平台的API调用所需的access_token的使用及生成方式说明: 1、建议公众号开发者...
  • 微信公众号获取普通access_token

    千次阅读 2019-01-14 10:39:21
    access_token公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新。 ...
  • 最近在做微信公众号,使用的是WxJava工具包,然后按照微信要求进行基本配置以后: 服务器地址URL格式:http://公网可访问域名/wx/portal/{appid} 然后访问后台 WxPortalController 的 authGet 方法进行验证 ...
  • java实现微信公众号token验证

    千次阅读 2019-06-13 17:45:10
    微信公众号token验证 查看了一些微信公众号平台的开发文档,得知签名验证需要以下参数 签名验证规则是: 1.开发者服务端获取得到signature、timestamp、nonce、echostr参数。 2.然后将token、timestamp、nonce三个...
  • 微信公众号获取素材列表 话不多说,直接上代码 /** * 微信获取素材 */ function wxmu(){ $access_token = access_token; $url = ...
  • 由于微信小程序不支持微信公众号获取access_token的域名配置,无法在小程序端通过wx.request()的方式来获取access_token,以下是获取微信公众号access_token的域名,经过几番折腾,终于实现了基于云开发中云函数的...
  • 微信公众号获取微信用户api调用 使用appid,redirect_url获取code string.Format(“https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=...
  • 微信公众号获取access_token 定时刷新

    千次阅读 2018-11-29 19:06:36
    微信官方文档:...另外access_token的有效期为2个小时,需定时刷新,并且每天获取有次数限制。 白名单设置是在:开发–&amp;amp;amp;gt;基本配置 中的下图位置 创建AccessToken类,属性acc...
  • // 获取微信公众号的Access Token $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret; 请求公众号的token值访问接口传入appid(小程序...
  • 下面小编就为大家带来一篇Thinkphp5 微信公众号token验证不成功的原因及解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 微信公众号开发示例 一、拥有80端口配置: 1、微信公众号相关配置 2、后台授权获取code、access_token、openid 参考微信开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 二、未...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,231
精华内容 8,892
关键字:

微信公众号获取token