• 【转】微信公众开发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知识。

    展开全文
  • 目前AppSecret是部分隐藏的,如果要查看完整的版本需要绑定手机并刷二维码,搞的貌似很安全 获取Access_token为了不暴露自动的AppId和AppSecret,我们要去向微信服务器要一个access_token 使用GET方法访问下面的...

    申请开发者

    登陆微信公众平台 点选左侧的开发者中心,申请成为开发者。

    成功后可以看到开发者中心界面,其中有AppId与AppSecret。目前AppSecret是部分隐藏的,如果要查看完整的版本需要绑定手机并刷二维码,搞的貌似很安全 

    获取Access_token

    为了不暴露自动的AppId和AppSecret,我们要去向微信服务器要一个access_token 使用GET方法访问下面的网址:

    1. https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET  

    参数说明

    参数是否必须说明
    grant_type获取access_token填写client_credentia 
    appid第三方用户唯一凭证
    secret第三方用户唯一凭证密钥,即appsecret

    访问后返回为Json:

    1. {  
    2.     "access_token""G4TT9jG3Y3S3pK4rBMxuCHFgRdo56SQKpC8WKv_4-rIeJ0UwnOaN9t8DCoIyKgSDAVAIKdV2cveWZ--oOEvsoYGy1jBTicXWQCgq2SHdo-Y",  
    3.     "expires_in": 7200  
    4. }  

    这个access_token就可以用于我们的服务器向微信服务器请求各种信息了。 相关文档在这里

    访问接口

    作为测试请求微信的服务器IP列表。

    访问:

    1. https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN  

    把 ACCESS_TOKEN 替换为上一步请求到的文本。我们会看到返回了一个Json:

    1. {  
    2.     "ip_list": [  
    3.         "101.226.62.77",  
    4.         "101.226.62.78",  
    5.         "101.226.62.79",  
    6.         "140.207.54.77",  
    7.         "140.207.54.78",  
    8.         "140.207.54.79",  
    9.         "140.207.54.80"  
    10.     ]  
    11. }  

    这些就是微信服务器的地址列表了。

    错误列表

    是网络请求就会出错,出错列表的官方文档在这里

    展开全文
  • 之前在服务器上成功部署并验证已通过,后开换了一个服务器地址就始终不能通过token验证,尝试了网上的很多办法,包括在 echo $echoStr;前面加上ob_clean();清空缓存等等。现在终于定位到原因,原来是在类class ...
    之前在服务器上成功部署并验证已通过,后开换了一个服务器地址就始终不能通过token验证,尝试了网上的很多办法,包括在
    
    echo $echoStr;前面加上ob_clean();清空缓存等等。现在终于定位到原因,原来是在类class wechatCallbackapiTest中我写了构造函数,并将一些数据库初始化的代码放在了里面,注释掉这些代码就能获得验证通过。具体原因可能是在数据库初始化的过程中耗时较多,造成token验证中的时间戳对应不上,造成了token无法通过。现在改写了我的构造函数,根据收到的消息传一个参数给构造函数,选择性地进行数据库操作,这样问题就解决了。如下:
    define("TOKEN", "wechat");
    $wechatObj = new wechatCallbackapiTest(!isset($_GET['echostr']));
    class wechatCallbackapiTest
    {
       public function __construct($IsInitMysql = '')
       {
          //如果做太多处理会导致校验失败。可能是因为耗时导致时间戳对不上了
            if($IsInitMysql)
            {
                $this->LetcoreMysql = new LetcoreMysql();
    希望对在token验证上困扰的同学有帮助,如果有更好的办法请指教
    展开全文
  • 说明:在微信公众号测试平台中填写了正确的url、token后,微信会向填写的url地址发送一条get请求。该请求带有signature、timestamp、nonce、echostr参数。服务端返回echostr参数,则表示token验证成功。 @...

    1、配置springMVC环境。

    这里就不贴代码了。不知道的朋友,可以去看我的博客。

    2、验证token

    说明:在微信公众号测试平台中填写了正确的url、token后,微信会向填写的url地址发送一条get请求。该请求带有signature、timestamp、nonce、echostr参数。服务端返回echostr参数,则表示token验证成功。

    @Controller
    public class HelloWorldController {
        /**
         * 微信消息接收和token验证
         * @param model
         * @param request
         * @param response
         * @throws IOException
         */
        @RequestMapping("/hello")
        public void hello(Model model, HttpServletRequest request,HttpServletResponse response) throws IOException {
            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();
                    }
                }
        }
    请求校验工具类
    public class CheckoutUtil {
        // 与接口配置信息中的Token要一致
        private static String token = "Javen";
    
        /**
         * 验证签名
         * 
         * @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;
                    }
                }
            }
        }
    }

    3、在微信公众号测试平台中,填写url、token

    注:

    1、url为项目路径且必须可以通过外网80端口访问
    2、token必须和项目中token一致


    转:http://lib.csdn.net/article/wechat/46003

    展开全文
  • 好久没有更新博客,最近课余时间看看微信的开发,本文主要介绍如何认证微信的token,开启微信开发之旅。 首先我是申请了一个新浪云的一个应用,进行开发(SAE),主要利用php进行验证

    好久没有更新博客,最近课余时间看看微信的开发,本文主要介绍如何认证微信的token,开启微信开发之旅。

    首先我是申请了一个新浪云的一个应用,进行开发(SAE),主要利用php进行验证。


    1.首先是修改配置,需要填写url 和 Token ,token 可以随便填写只要和服务器端的自己设置的token对应起来就可以了。


    2.验证微信端发来的信息,用php代码进行验证,我将代码封装了一下,两个文件

    weixin.php //实现

    index.php  // 调用


    wexin.php 代码如下

    <?php       
       define("TOKEN", "yusw");
       
       class WeiXinConfirm{ 
           private function checkSignature()
           {
                 //1.接收微信发过来的get请求过来的4个参数 
                 $signature = $_GET["signature"];
                 $timestamp = $_GET["timestamp"];
                 $nonce = $_GET["nonce"]; //随机数
                 
                 //2.加密
                 //1.将token,timestamp,once 三个参数进行字典序排序
                 $tmpArr = array(TOKEN,$timestamp,$nonce);
                 sort($tmpArr,SORT_STRING);
                 
                 //2.将三个参数字符串拼接成一个字符串进行sha1加密
                 $tmpStr =  implode($tmpArr);
                 $tmpStr =  sha1($tmpStr);
    
                 //3.将 加密后的字符串与$signature对比
                 if( $tmpStr == $signature ){
                     return true;
                 }else{
                     return false;
                 }
             }
             
             public function valid()
             {
                 if ($this->checkSignature()){
                     echo $_GET["echostr"];
                 }else{
                     echo "hello world";
                 }
             }
         
     
       }
    
    ?>

    主要有4步:

    1.接收微信发过来的get请求过来的4个参数 

    2.加密将token,timestamp,once 三个参数进行字典序排序
    3.将三个参数字符串拼接成一个字符串进行sha1加密
    4.将 加密后的字符串与$signature对比。


    index.php 实现调用 ,代码如下

    <?php
       require("weixin.php");
       
       $wx = new WeiXinConfirm();
       
       $wx->valid();
       
    
    
    ?>

    success!


    本文 

         完!




    展开全文
  • 引子微信公众号开启开发者模式时,需要配置“服务器配置”,但在配置这个东西时有很多坑需要注意。网上解决的问题这里就不再赘述,下面说的是我碰到的问题,同时也叙述了“TOKEN验证失败”的根源问题。背景 之前,我...
  • java 微信开发token验证失败的解决
  • 最近开始折腾一下微信公众号开发,踩的一些莫名其妙的坑,给大家分享一下:首当其冲,当然是基础步骤中的开发者配置了。其实呢,只要认真读文档也就木有问题,但是总有一些粗心大意的人——我。 坑一:端口号未...
  • Java写的微信公众号token验证+实现你问我答功能小项目
  • 微信公众号token验证 查看了一些微信公众号平台的开发文档,得知签名验证需要以下参数 签名验证规则是: 1.开发者服务端获取得到signature、timestamp、nonce、echostr参数。 2.然后将token、timestamp、nonce三个...
  • 首先要开启开发模式必须要进行Token的一个验证,你给出一个地址,微信发送请求,然后你给出相应,就这么简单。虽然说是简单,但是这是事后才说的,官方只有PHP的DEMO,我用JAVA开发的时候各种蛋疼不会弄,不过好在...
  • 我有自己的服务器,使用java和jsp开发,但是不知道怎养在服务器去获取微信token验证,需要在服务器做什么。求大神指点
  • 微信开发里面的token有什么用啊,站内解释才给分,否则不给哦。
  • Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。 根据官方开发文档,服务器需要接收参数并进行验证,验证通过后再返回其中一个参数 接收,并...
  • 微信公众号开发基本设置中官方文档bug,致使token验证无法通过 这篇博文主要要讲的是,根据腾讯官方开发者文档进行公众号开发者基本配置后,出现的token验证无法通过的问题,在此我将叙述整个懵逼及思考的过程。 ...
  • 云服务器 ECS 服务器中微信公众平台 Token 验证失败常见原因 很多的用户的程序后台在 ECS 服务器进行微信公众平台 Token 验证是显示失败如下图:   1、非正常编辑文件(记事本,在线编辑),...
  • (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2...
  • java微信token

    2019-01-29 13:39:49
    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;...// 与接口配置信息中的Token要一致 private static String token = “Javen”; /** * 验证签名 * * @param sig...
  • 微信公众号开发token验证文件,包括自动回复消息相关信息
  • 开发前准备: 1.购买服务器 2.首先先申请一个微信公众号,在微信公众号里注册一个服务号(个人除外--原因:目前微信不支持个人开通服务号,可以开通订阅号,订阅号不能开通微信支付功能) 3.开通后找到微信公众号...
1 2 3 4 5 ... 20
收藏数 29,502
精华内容 11,800