精华内容
下载资源
问答
  • 1、因为再微信公众号开发关键字回复的时候需要使用到接口配置信息URL和Token. 刚开始配置的时候总是失败,原因是自己使用花生壳的外网的端口不是80,所以我将外网端口该为了80,后来配置成功。 重点:1、这个一定...

    1、因为再微信公众号开发关键字回复的时候需要使用到接口配置信息URL和Token.

    刚开始配置的时候总是失败,原因是自己使用花生壳的外网的端口不是80,所以我将外网端口该为了80,后来配置成功。

    重点:1、这个一定是使用外网可以访问的url;2、外网端口一定是80的,好像还有一个不过我忘记啦,自己本地的端口可以随便(我的是8080)3、本地地址可以外网访问的话,可以使用花生壳,(是免费的,可以直接在官网下载,然后注册下就可以啦)4、token是自己随便设置的

     

     1、本地写一个微信访问的方法:

    package com.uvksoft.mobile.web.agent.wx;
    import javax.servlet.http.HttpServletRequest;
    import com.uvksoft.common.util.wx.SignUtil;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.io.PrintWriter;
    import java.util.Enumeration;
    import javax.servlet.http.HttpServletResponse;
    @RestController
    public class AgentWeixinReplyController {
    	
    
    	
    
    	@RequestMapping(value = "/wx/reply.do")
    	public void get(HttpServletRequest request, HttpServletResponse response) throws Exception {
    
    		System.out.println("========WechatController========= ");
    		
    
    		Enumeration pNames = request.getParameterNames();
    		while (pNames.hasMoreElements()) {
    			String name = (String) pNames.nextElement();
    			String value = request.getParameter(name);
    			// out.print(name + "=" + value);
    			String log = "name =" + name + "     value =" + value;
    		}
    		System.out.println("========WechatControllertets========= ");
    		String signature = request.getParameter("signature");/// 微信加密签名
    		String timestamp = request.getParameter("timestamp");/// 时间戳
    		String nonce = request.getParameter("nonce"); /// 随机数
    		String echostr = request.getParameter("echostr"); // 随机字符串
    		PrintWriter out = response.getWriter();
    
    		 if (SignUtil.checkSignature(signature, timestamp, nonce)) {  
    			 System.out.println("校验成功!!!!!!!!!!!!!");
    	          out.print(echostr);  
    	      } 
    		
    		out.close();
    		out = null;
    
    	}
    
    }
    

    2、token校验方法

    package com.uvksoft.common.util.wx;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;
    
    /** 
     * 请求校验工具类 
     *  
     * @author HXM 
     * @date 2019-07-6 
     */  
    public class SignUtil {  
        // 与接口配置信息中的Token要一致  
        private static String token = "weixinCore";  
      
        /** 
         * 验证签名 
         *  
         * @param signature 
         * @param timestamp 
         * @param nonce 
         * @return 
         */  
        public static boolean checkSignature(String signature, String timestamp, String nonce) {  
            String[] arr = new String[] { token, timestamp, nonce };  
            // 将token、timestamp、nonce三个参数进行字典序排序  
            Arrays.sort(arr);  
            StringBuilder content = new StringBuilder();  
            for (int i = 0; i < arr.length; i++) {  
                content.append(arr[i]);  
            }  
            MessageDigest md = null;  
            String tmpStr = null;  
      
            try {  
                md = MessageDigest.getInstance("SHA-1");  
                // 将三个参数字符串拼接成一个字符串进行sha1加密  
                byte[] digest = md.digest(content.toString().getBytes());  
                tmpStr = byteToStr(digest);  
            } catch (NoSuchAlgorithmException e) {  
                e.printStackTrace();  
            }  
      
            content = null;  
            // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信  
            return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;  
        }  
      
        /** 
         * 将字节数组转换为十六进制字符串 
         *  
         * @param byteArray 
         * @return 
         */  
        private static String byteToStr(byte[] byteArray) {  
            String strDigest = "";  
            for (int i = 0; i < byteArray.length; i++) {  
                strDigest += byteToHexStr(byteArray[i]);  
            }  
            return strDigest;  
        }  
      
        /** 
         * 将字节转换为十六进制字符串 
         *  
         * @param mByte 
         * @return 
         */  
        private static String byteToHexStr(byte mByte) {  
            char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };  
            char[] tempArr = new char[2];  
            tempArr[0] = Digit[(mByte >>> 4) & 0X0F];  
            tempArr[1] = Digit[mByte & 0X0F];  
      
            String s = new String(tempArr);  
            return s;  
        }  
    }  

     

    展开全文
  • 微信公众开发URL和token填写详解

    万次阅读 2018-09-11 09:42:32
    【转】微信公众开发URL和token填写详解 很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写。看了教程也不理解是什么,本文详述一下这个问题。 第一步:作为一名微信公众号开发者,别人...

    【转】微信公众开发URL和token填写详解

    很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写。看了教程也不理解是什么,本文详述一下这个问题。

    第一步:作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服务的服务器。我们所要填写的url就是你提供的服务器的地址,前提是这个服务器的地址你要能够访问,且能够控制。而token是用来验证的。

    第二步:然后你需要一个服务器,服务器可以自己购买,也能用新浪sae,百度bae。方法是进入其开发者中心,注册一个开发者账号。并进行实名认证!(没有进行实名认证的小伙伴们是无法成功的)

    第三步:注册完毕后,我们进入控制台创建一个新应用。

    第四步:创建完应用之后我们进入左侧代码管理,提示我们创建一个新版本,点击确定创建一个新版本。然后选择第一张图中的编辑代码选项。弹出第二张图,双击index.php编辑本页代码。

    第五步:将下面的代码加标点复制进去。将define("TOKEN", "weixin")这句话中的weixin改成你自己的token,例如zijidetoken;然后点击右上角的全部保存。

    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

    61

    62

    63

    64

    65

    <?php

    /**

      * wechat php test

      */

    //define your token

    define("TOKEN""weixin");

    $wechatObj new wechatCallbackapiTest();

    $wechatObj->valid();

    class wechatCallbackapiTest{

    public function valid(){

            $echoStr $_GET["echostr"];

            //valid signature , option

            if($this->checkSignature()){

            echo $echoStr;

            exit;

            }

        }

        public function responseMsg(){

    //get post data, May be due to the different environments

    $postStr $GLOBALS["HTTP_RAW_POST_DATA"];

          //extract post data

    if (!empty($postStr)){

                  $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA);

                    $fromUsername $postObj->FromUserName;

                    $toUsername $postObj->ToUserName;

                    $keyword = trim($postObj->Content);

                    $time = time();

                    $textTpl = "<xml>

    <ToUserName><![CDATA[%s]]></ToUserName>

    <FromUserName><![CDATA[%s]]></FromUserName>

    <CreateTime>%s</CreateTime>

    <MsgType><![CDATA[%s]]></MsgType>

    <Content><![CDATA[%s]]></Content>

    <FuncFlag>0</FuncFlag>

    </xml>";            

    if(!empty$keyword )){

                  $msgType "text";

                    $contentStr "Welcome to wechat world!";

                    $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr);

                    echo $resultStr;

                    }else{

                    echo "Input something...";

                    }

            }else {

            echo "";

            exit;

            }

        }

    private function checkSignature(){

            $signature $_GET["signature"];

            $timestamp $_GET["timestamp"];

            $nonce $_GET["nonce"];

    $token = TOKEN;

    $tmpArr array($token$timestamp$nonce);

    sort($tmpArr);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

    if$tmpStr == $signature ){

    return true;

    }else{

    return false;

    }

    }

    }

    ?>

     第六步:按照第一幅图中又键点击index.php文件,选择通过URL访问得到第二幅图,复制地址栏的网址,这就是你微信开发需要填写的url,而你需要填写的token就是你上一步骤自己修改后的token。

     第七步:填写完毕,提交成功。好了,你可以开始你的微信公众开发了。

    第八步:总结1.开发者一定要实名认证后才行,不然会提示验证token失败。2.微信开发需要php知识。

    展开全文
  • 首先我们来看两张图,第一张是微信公众号中设置的图 第二张是测试号中的图片,之...现在讲讲接口配置信息里面的url和token到底填啥 微信需要一个请求一个URL来响应token验证,也就是你点击确定的时候是向你指定...

    首先我们来看两张图,第一张是微信公众号中设置的图

    第二张是测试号中的图片,之所以打马赛克是怕不良之心的人,如果有疑问可以在文章后留言,因为本人在这个问题上捣鼓了好几天,所以比较有心得,而微信公众号的开发文档或者百度的资料都不多,所以很容易走弯路

     

    现在讲讲接口配置信息里面的url和token到底填啥

    微信需要一个请求一个URL来响应token验证,也就是你点击确定的时候是向你指定的URL发送一个请求,在请求里面验证你的token是否正确。也就是我们需要一个外网接口让微信访问,这个接口不需要传入任何参数;注意必须是外网服务器接口,微信才能调用.

    所以需要写一个接口放在服务器上

    
    import java.io.PrintWriter;
    
    import java.util.Enumeration;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.log4j.Logger;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
     
    @RequestMapping("/wechat")
    @Controller
    public class WechatController {
    	private static Logger logger = Logger.getLogger(WechatController.class);
     
    	private static String WECHAT_TOKEN = "wx_oms";
     
    	@RequestMapping(value = "/wx.do")
    	public void get(HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    		logger.error("WechatController   ----   WechatController");
     
    		System.out.println("========WechatController========= ");
    		logger.info("请求进来了...");
     
    		Enumeration pNames = request.getParameterNames();
    		while (pNames.hasMoreElements()) {
    			String name = (String) pNames.nextElement();
    			String value = request.getParameter(name);
    			// out.print(name + "=" + value);
     
    			String log = "name =" + name + "     value =" + value;
    			logger.error(log);
    		}
     
    		String signature = request.getParameter("signature");/// 微信加密签名
    		String timestamp = request.getParameter("timestamp");/// 时间戳
    		String nonce = request.getParameter("nonce"); /// 随机数
    		String echostr = request.getParameter("echostr"); // 随机字符串
    		PrintWriter out = response.getWriter();
     
    		//if (SignUtil.checkSignature(signature, timestamp, nonce)) {
    			out.print(echostr);
    //		}s
    		out.close();
    //		out = null;
     
    	}
     
    }

    现在我来讲讲验证原理:微信使用我们提供的token,通过算法生成签名,然后将这几个参数(signature ,timestamp ,nonceechostr )传给我们,我们服务端通过我们提供的token按照微信的算法得出一个值,如果是同一个值说明token有效

     

    现在你需要通过之前说的那个外网可以访问的url访问到我们这个类,也就是用url+' /wechat/wx.do '访问到我们的方法,这样微信就可以拿到我们的token了,然后就把这个url+' /wechat/wx.do '填写在url的地方,你自己在代码中设置的token填写在token的地方就可以完成验证了

    展开全文
  • 微信测试公众号基本配置URL和Token的验证-JAVA


    一、解释为什么要这样配置?

    我们填写的URL和Token,微信那边会根据你填的来验证是否正确,URL必须有域名的,Token自己定义的。

    微信调用我们服务器,会通过GET请求,请求带有signature、timestamp、nonce、echostr参数。服务端返回echostr参数,则表示token验证成功。


    二、直接上代码

            @GET
    	@Path("/tokenVarify")
    	@Produces(MediaType.APPLICATION_JSON)
    	@Consumes(MediaType.APPLICATION_JSON)
    	@ApiOperation(value = "Vatify wc token", position = 1)
    	public void tokenVarify(@Context HttpServletRequest request,
    			@Context HttpServletResponse response) {
    		boolean isGet = request.getMethod().toLowerCase().equals("get");
    		PrintWriter print;
    		if (isGet) {
                // 微信加密签名
                String signature = request.getParameter("signature");
                // 时间戳
                String timestamp = request.getParameter("timestamp");
                // 随机数
                String nonce = request.getParameter("nonce");
                // 随机字符串
                String echostr = request.getParameter("echostr");
                // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
                if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
                    try {
                        print = response.getWriter();
                        print.write(echostr);
                        print.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    		}
    	}

    CheckoutUtil.java

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class CheckoutUtil {
    	// 与接口配置信息中的Token要一致
        private static String token = "bryant.zhang.test";
    
        /**
         * 验证签名
         * 
         * @param signature
         * @param timestamp
         * @param nonce
         * @return
         */
        public static boolean checkSignature(String signature, String timestamp, String nonce) {
            String[] arr = new String[] { token, timestamp, nonce };
            // 将token、timestamp、nonce三个参数进行字典序排序
            // Arrays.sort(arr);
            sort(arr);
            StringBuilder content = new StringBuilder();
            for (int i = 0; i < arr.length; i++) {
                content.append(arr[i]);
            }
            MessageDigest md = null;
            String tmpStr = null;
    
            try {
                md = MessageDigest.getInstance("SHA-1");
                // 将三个参数字符串拼接成一个字符串进行sha1加密
                byte[] digest = md.digest(content.toString().getBytes());
                tmpStr = byteToStr(digest);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            content = null;
            // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
            return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
        }
    
        /**
         * 将字节数组转换为十六进制字符串
         * 
         * @param byteArray
         * @return
         */
        private static String byteToStr(byte[] byteArray) {
            String strDigest = "";
            for (int i = 0; i < byteArray.length; i++) {
                strDigest += byteToHexStr(byteArray[i]);
            }
            return strDigest;
        }
    
        /**
         * 将字节转换为十六进制字符串
         * 
         * @param mByte
         * @return
         */
        private static String byteToHexStr(byte mByte) {
            char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
            char[] tempArr = new char[2];
            tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
            tempArr[1] = Digit[mByte & 0X0F];
            String s = new String(tempArr);
            return s;
        }
        public static void sort(String a[]) {
            for (int i = 0; i < a.length - 1; i++) {
                for (int j = i + 1; j < a.length; j++) {
                    if (a[j].compareTo(a[i]) < 0) {
                        String temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
        }
    }
    



    展开全文
  • 从上图中可以看到,高级功能包含两种模式:编辑模式开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢? 编辑模式:主要针对非编程人员及...
  • 微信公众号URL和Token配置验证

    千次阅读 2018-08-30 14:46:23
    微信公众号验证URL和Token的配置,以及在项目中获取Token进入正题首先准备一些事情; 测试的公众号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 获得appId appsecret 为配置微信服务端; ...
  • 微信公众平台测试号的url和token原理

    千次阅读 2017-03-28 12:01:22
    1.在微信开发平台测试号后台填写的url和token 2.点击保存的时候微信服务器会自动发一个get请求到我们写的url上面! 我们要根据我们写的token做 签名验证 3.如果签名验证成功的话!把微信发给我们的随机字符串再...
  • java开发公众号接口时,url地址为http://10.20.21.237/WechatDemo/wechat.do。 做的是路由器映射,地址是可以通过互联网访问的。为什么还是验证失败呢?...用ip映射的 url 不可用吗????求大神指点
  • 主要介绍了微信小程序urltoken设置详解的相关资料,希望通过本文能帮助到大家解决类似问题,需要的朋友可以参考下
  • 我们在申请测试帐号时,微信需要指定一个URL和TOKEN,这样微信就可以根据分配给你的APPIDSECRET来通过你提供的URL来认证并且通过这个接口返回你要的数据,所以也就是我们的程序微信是能过这个URL来完成交互的,...
  • 微信测试号的URL和Token原理

    千次阅读 2015-10-31 19:06:56
    在我们提交URL和Token信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: Signature(微信加密签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)。 Signature 结合了开发者...
  • ![-107错误]...这个项目报错,把测试号放到另一个项目是成功的,会不会是服务器时间不准的原因? 求大神看看 {errcode: -107, errmsg: "token check timeout"} errcode: -107 errmsg: "token check timeout
  • 主要介绍了php版微信开发Token验证失败或请求URL超时问题的解决方法,简单分析了Token验证失败及请求URL超时的原因及相关解决方法,需要的朋友可以参考下
  • PHP 模拟登陆微信公众平台,一键绑定URL和TOKEN的功能 代码就不贴出来了,把思路记录一下吧。...②设置服务器配置(用于接收用户信息)那里,post提交URL和TOKEN; ③关闭编辑模式,打开开发模式;
  • 今天困扰我好长时间的问题终于得到了解决,那就是微信众众号平台配置Token一直提示token验证失败的,接下来我就说说我是怎么解决的(还能咋解决,查资料,copy别人的例子一个一个试呗) 问题 微信公众号配置token...
  • 获取后台返回的URL中的Token

    千次阅读 2019-08-20 09:21:20
    获取后台返回的URL中的Token App.vue中 // An highlighted block methods: { init() { var url = window.location.href; //access_token是后台所指定的key if (url.indexOf('access_token') != -1) { //登录...
  • 当然有,把window.name利用起来就可以搞定了 开发过程中遇到了个问题,从当前页A...这时打开的新窗口的地址栏上就可以直接看到这个token了,测试认为这样是不安全的,不希望地址栏显示token 这时就可以使
  • js 获取URL上的token

    千次阅读 2019-01-08 08:36:30
    GetQueryString(name) { var reg = new RegExp("(^...sessionStorage.setItem.session('access_token',this.GetQueryString("access_token"));   vue 可以直接用 query 获取。 this.$route.query.token.
  • 在重新配置微信公众号urltoken一直提示验证失败,明明证书没有过期,外网也可以访问,缺一直提示token一直提示验证失败。 在网上搜索一堆全是如何配置,却没有关于这个报错的解决方案。 没办法,总得自己解决,...
  • tokenurl传递的思路

    万次阅读 2018-03-15 18:16:30
    要求从我liferay网站发出的菜单链接一点击必须要在http://后边凭借querystring解决方案:利用js的操作dom来实现动态拼接querystring,可以根据需要在每个菜单定制不同携带类型,也可以统一携带一种减少配置。...
  • requests模拟登陆(session+url_token)

    千次阅读 2017-12-04 22:45:38
    session 在 requests 里,session对象是一个非常常用的对象,这个...result = session.post(url=login_url, data=data, headers=headers) print(result.status_code) res = json.loads(result.text) print(res)
  • js获取url参数值比如token和id

    千次阅读 2017-07-08 16:18:22
    比如要获取这个页面的URL后面的参数信息token和idindex.html?token=9b68dd98306327bf&id=15 (可以在后面index.html后面加上?token=9b68dd98306327bf&id=15刷新页面进行测试。)//获取地址参数 token,id ...
  • 模拟登陆微信设置url和token,出现{"ret":"-104", "msg":"check args error"}
  • Glide缓存- 图片URLtoken问题

    千次阅读 2018-11-04 18:52:02
    部门项目的图片资源都是存放在阿里云上面的,最近项目重构,领导决定将内部图片资料存放在360云上,因此部分支持换成了360云。而360云为了对图片资源...http://url.com/image.jpg?token=d9caa6e02c990b0a  而使...
  • 即“企业中台系统实战”,其中主要包含三大块核心内容,如下图所示(右键可以在新标签页中打开图片放大查看): 即主要包含以下三大块内容: ① 企业内部应用系统菜单资源操作权限的统一管理; ② 分布式应用系统...
  • 最近在学习Spring Security+OAuth2分布式权限管理,在了解了oauth2后,进行密码...http://localhost:8888/user-auth/oauth/token?client_id=octoiot&client_secret=secret&grant_type=password&userna...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 233,420
精华内容 93,368
关键字:

url和token