精华内容
下载资源
问答
  • 检查代码是不是调用了两次获取accesstoken 和重复使用了code 一个code只能用一次 多半是把获取token地址封装成了方法,然而一次请求中方法又被调用了两次,所以出现了这个错误 调用一次就够了 ...
    {"errcode":40163,"errmsg":"invalid code, hints: [ req_id: UHNfMA.KRa-8gb0KA ]"}
    {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: UHNfMA.KRa-8gb0KA ]"}
    
    原因1重复请求地址获取了两次accesstoken
    检查代码是不是调用了两次获取accesstoken 和重复使用了code  
    一个code只能用一次
    多半是把获取token地址封装成了方法,然而一次请求中方法又被调用了两次,所以出现了这个错误 调用一次就够了
    
    原因2检查该菜单的请求地址code 或者state 是否为null 或没有配置 或错误
    正确配置如下:
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https://blog.csdn.net/WithCYwind&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
    
    展开全文
  • token 是在网页中和微信服务器商量好的哦。下次使用的时候直接代码复制即可使用 /** * Created by PhpStorm. * User: liaosp * Date: 2017/8/23 * Time: 10:36 */ $timestamp = $_GET['timestamp']; $nonce =...



    token 是在网页中和微信服务器商量好的哦。下次使用的时候直接代码复制即可使用

    <?php
    /**
     * Created by PhpStorm.
     * User: liaosp
     * Date: 2017/8/23
     * Time: 10:36
     */
    
    $timestamp = $_GET['timestamp'];
    $nonce = $_GET['nonce'];
    $token = 'weixin';  //在网页中配置的token
    $signature = $_GET['signature'];
    $array = array($timestamp,$nonce,$token);
    $tmpstr= implode('',$array);
    $tmpstr = sha1($tmpstr);
    if ($tmpstr == $signature){
        echo $_GET['echostr'];
        exit;
    }


    有时候没有用是有bom头的影响

    在echo 前面添加     ob_clean();    清楚前面的输出

    展开全文
  • 以前处理过一个BUG,在其他端口点击跳转到网页端时,用户继续操作时没有权限上传失败、或没有浏览权限跳转到404页面 这个问题的是因为在跳转的过程中token没有传递过来,为了解决这个问题,写了一个跳转页面,接收...

    以前处理过一个BUG,在其他端口点击跳转到网页端时,用户继续操作时没有权限上传失败、或没有浏览权限跳转到404页面

    这个问题的是因为在跳转的过程中token没有传递过来,为了解决这个问题,写了一个跳转页面,接收加密过的用户id、sessionkey、url

    在此页面进行权限验证并存入缓存,成功则跳转到url,废话不多说,上代码:

    //服务端
    <?php
    //加密解密服务
    require("common/aes.php");
    
    // 定义项目路径
    defined('API_ROOT') || define('API_ROOT', dirname(__FILE__) . '/..');
    define('VERSION', 'test'); // develop=>开发,test=>测试,product=>正式
    
    // 引入composer
    require_once API_ROOT . '/vendor/autoload.php';
    
    // 时区设置
    date_default_timezone_set('Asia/Shanghai');
    session_start();
    $userid = $_GET['u'];
    $sessionKey = $_GET['s'];
    $go = $_GET['g'];
    
    if (isset($userid) && strlen($userid) > 0 && isset($sessionKey) && strlen($sessionKey) > 0 && isset($go) && strlen($go) > 0) {
        $des = new TripleAES();
        $userid = (int)trim($des->Decrypt($userid));
        $sessionKey = trim($des->Decrypt($sessionKey));
        $go = trim($des->Decrypt($go));
    
        $checkErrMsg = "";
        $data = DoUserLogin($userid, "", $sessionKey, $checkErrMsg) or die('你当前已离线,请重新登录在刷新重试!' . $userid . '--' . $sessionKey . '---' . $go);
        $nulstr = strstr($go, chr(0));
        if ($nulstr) {
            $go = substr($go, 0, strlen($go) - strlen($nulstr));
        }
        header("Location: " . $go);
    } else {
        die('你当前已离线,请重新登录在刷新重试!');
    }
    //验证并缓存用户数据
    function DouserLogin($userid, $password, $sessionKey, &$checkErrMsg)
    {
    
        try {
            $client = \GrpcServer\ClientFactory::createClient(
                'tokencheck.TokenCheck', VERSION
            );
            $req = new \Cfwf\Micro_service\Tokencheck\CheckUserTokenWhenClientAccessRequest();
            $req->setUserid($userid);
            $req->setToken($sessionKey);
            $req->setOs(1);
            list($data) = $client->CheckUserTokenWhenClientAccess($req)->wait();
            $lists = $data->toArray();
            if ($lists['result'] != 1) {
                return false;
            } else {
                $request['os'] = 1;
                $request['user_id'] = $userid;
                $request['token'] = $sessionKey;
                $request['web_level'] = 0;
                $AccountGrpc = new \Common\Domain\AccountGrpc();
                $data = $AccountGrpc->setLoginUserInfo($request, VERSION);
                $_SESSION['loginUserInfo'] = $data;
                return $data;
            }
        } catch (\Exception $e) {
            return false;
        }
    }
    
    ?>
    

    跳转到新页面的时候,发现有时还是没有权限,经过检查,前端把token存在在浏览器缓存了,刚跨平台跳转当然不会有浏览器缓存,所以在前端请求前需要把token存入浏览器缓存内。

    我在vue的钩子方法内,首先调用请求到接口获取用户数据,保证后续的请求都拿到了 token,还是直接上代码。

    ...
      created() {
        this.id = this.$route.query.id; // 栏目id
        this.a_id = this.$route.query.a_id; // 活动id
        this.getLoginInfo();
      },
    .....
      methods: {
        // 获取登录数据
        //这个接口在白名单内,无需token验证
        async getLoginInfo() {
          const data = {
            s: "Common.Account.getLoginUserInfo",
          };
          //调用接口
          let response = await api.post(url.httpUrl, data);
          const res = response.data.data;
          const isLogin = api.eventListener(res);
          this.user_id = localStorage.getItem("ms_userid");
          this.uploadUrl = url.uploadPath; // 文件上传地址
          this.uploadData = {
            UserId: localStorage.getItem("ms_userid"),
            SessionKey: localStorage.getItem("ms_token"),
            OS: 4,
            CheckCode: api.randomString(40),
          };
          this.options = {
            target: url.uploadPath, // 上传地址
            testChunks: false,
            singleFile: false, // 启用单个文件上传。上传一个文件后,第二个文件将超过现有文件,第一个文件将被取消。
            chunkSize: "1048576" * 1, //分块大小 单位(M)
            query: {
              //传参
              UserId: localStorage.getItem("ms_userid"),
              SessionKey: localStorage.getItem("ms_token"),
              OS: 4,
              PluginType: 1,
            },
          };
          this.function1();
        },
    },
    ...
    //api.js内方法
        // 监听登录状态做出相应处理,返回是否登录
        eventListener(res) {
            if (res) {
                localStorage.setItem("ms_username", res.username);
                localStorage.setItem("ms_userid", res.userid);
                localStorage.setItem("ms_userface", res.userface);
                localStorage.setItem("ms_schoolid", res.schoolid);
                localStorage.setItem("ms_identity", JSON.stringify(res.identity));
                localStorage.setItem("ms_userAuth", JSON.stringify(res.userAuth));
                localStorage.setItem("ms_schoolname", res.schoolname);
                localStorage.setItem("ms_token", res.token);
                localStorage.setItem("ms_token_endtime", res.token_endtime);
                return true;
            } else {
                //清除缓存
                this.clearLoginInfo();
                return false;
            }
    
        },
       //api.js 内封装的post请求
        post(url, data) {
            if (!data.userid) {
                data.userid = localStorage.getItem("ms_userid") ? localStorage.getItem("ms_userid") : 1;
            }
            //前端请求携带的token
            data.token = localStorage.getItem("ms_token");
            return axios({
                method: 'post',
                url,
                data: qs.stringify(data),
                timeout: 30000,
                headers: {}
            }).then(function (response) {
                if (response.data.ret != 200) {
                    v.$notify({
                        message: "当前页面部分功能暂时不可用,请稍后再试。",
                        offset: 100
                    });
                    return false;
                }
                return response;
            }
            ).catch(function (error) {
                console.log(error);
                // 网络异常引发的错误
            });
        },

    至此,这个因为权限已经解决了。

     

     

     

     

     

     

     

     

     

    展开全文
  • 原理:用微信公众号文档的教程获取access_token,...直接上代码第一段代码,根据微信公众号提供的教程,获取access_token的值。&lt;?php $token_access_url = "https://api.weixin.qq.com/cgi-bin/token?gr...

    原理:用微信公众号文档的教程获取access_token,编写php脚本,定时刷新,并将值存入数据库,需要用的话就直接从数据库下载,不必再次获取access_token的值。

    直接上代码

    第一段代码,根据微信公众号提供的教程,获取access_token的值。

    <?php
    $token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=此处为你的APPID&secret=此处为你的APP密码";
    $res = file_get_contents($token_access_url);
    $result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
    $access_token = $result['access_token'];
    // echo $access_token;
    ?>

    第二段代码。将值存入数据库并定时刷新

    <?php
    header("Content-type:text/html;charset=utf-8");
    $time=1.8*60*60;//此处设置刷新时间,我设置的是1.8小时,因为设置两小时的话可能会有延迟,导致业务无法进行,尽管微信公众号规定到期后五分钟,新旧access_token都可以使用
    $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//当前文件的url
    include_once 'access_token_yuanshishuju.php';//此处插入第一段获取access_token的php文件
    include_once 'coom.php';//此处插入mysql连接设置文件
    mysqli_query($conn , "set names utf8");
    $sql = "UPDATE 表名
            SET 字段名= '$access_token'
            WHERE id=1";
    mysqli_select_db( $conn, '数据库名' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
      die('无法更新数据: ' . mysqli_error($conn));
    }
    echo "数据更新成功\n";
    mysqli_close($conn);//access_token的值存入数据库
    sleep($time);
    file_get_contents($url);//此处设置定时刷新,需打开一次该文件,打开后会一直显示刷新状态,然后关闭就行了 ,会一直自己运行,修改本文件后需再一次打开本文件,保证一直刷新
    ?>

    第三段代码,从数据库获取access_token的值

    <?php 
    include_once 'coom.php';//数据库连接设置
    mysqli_query($conn , "set names utf8");
    $sql = 'SELECT 字段名
            FROM 表名
            where id = 1';
    mysqli_select_db( $conn, '数据库名' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
      die('无法查询数据: ' . mysqli_error($conn));
    }
    $row = mysqli_fetch_array($retval, MYSQL_ASSOC);
    $access_token = $row['access_token'];//获取该值
    mysqli_close($conn);
    // echo $access_token;
    ?>

    有不明白的,可以留言,大家一起进步。

    这种PHP定时任务的方法不好用,请移步后更新的windows系统定时任务方法

    点击进入

    PHP,window系统定时任务,解决PHP文件定时执行问题

    或者复制链接进入

    https://blog.csdn.net/weixin_41797287/article/details/80346013

    展开全文
  • Uncaught SyntaxError: Unexpected token <; 错误完美解决

    万次阅读 多人点赞 2019-03-22 10:49:55
    今天写代码的时候发现了"Uncaught SyntaxError: Unexpected token <" <html>的js错误,而且还是html的第一行,我就蒙了,这第一行有啥问题啊,还有一个“<”符号,我以为是我的网页标签没有闭包,所以...
  • 建议:一定要先看官方文档 ...id=mp1421140842 注意事项和说明官方文档都有...两种方案:第一种原生代码,我这里说第二种sdk实现,github上面有很多优秀的sdk,这里只说其一 github sdk地址:https://github.com/Wec...
  • 检查获取access_token的接口是否混淆,一个是基础access_token,一个是网页授权access_token,其差别在于基础access_token无需code,所以使用要明确 如下: 1.如果使用以下接口获取用户信息则使用网页授权access_token,...
  • 微信网页授权接口代码示例

    千次阅读 2016-07-19 16:49:37
    OAuth2.0网页授权演示 点击这里 回调页面 if (isset($_GET['code'])){ // echo $_GET['code']; //通过code换取token $code = $_GET['code']; $url = ...
  • 1.我们首先在公众测试号那...获取code 在控制器写入以下代码: public function index(){ $appid="wx4ff531ee8a470861"; $rediret_url=urlencode('http://wyzdjg.top/vote/index.php/home/index/get...
  • <...我的第一张网页</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "Hello World!"; </script> </body> </html>
  • 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) 5 附:检验授权凭证(access_token)是否有效 微信授权官方文档: ...
  • pikachu token防爆破?

    2020-03-22 11:23:39
    看源代码token是通过前端代码获取的,每次刷新登录页面时token会提前获取并放入网页内。 因此我们要使用暴力破解的话,需要每次都把token放入对应的值内。 用burp抓包 送到intruder中来爆破,后清空所有选定...
  • PostMan自动更新token

    千次阅读 2020-03-03 23:04:05
    参考网页 思路是利用Postman的Tests工具对Get返回的json...在获取access_token的接口中,Tests下输入如下代码: //声明一个变量json,将JSON返回Body里面的值解析并给变量json let json = JSON.parse(responseBod...
  • 微信access_token过期问题

    千次阅读 2019-01-08 17:43:03
     WeChatAPIError: invalid credential, ...问题: 公众号网页开发,后台使用node去微信服务器换取access_token,微信token的有效时间为7200s,但是换取的token很短的时间就失效了。 解决: 刚开始以为是代码有问...
  • 失败分析 自己写的token 微信服务器验证失败 官方给出了解释 只是我们没有参考而已 ...2在网页中填写服务器配置 1 服务器地址 填写 自己刚才创建文件的地址 2 token 自己填写 3 随机生成秘钥 4 选择明文模
  • 新工作新环境,还在熟悉新项目中。...2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_t...
  • 如图所示,我是空间的那片随笔,这里就不贴出链接了,也不希望你有这个兴趣,不知道会不会有人无意间闯入,额,自从日志用windows live writer 2009 发了那篇随笔后,我在网页上一直没能正常浏览过,只要一打开这篇...
  • 网页的请求头中,可以看到gzip, deflate, br等信息,可以做出大胆的假设和尝试,最后总结美团的token,加密算法其实比较简单,就是采用了二进制压缩与base64编码。所以解析token主要分为两个步骤:一是base64解码...
  • 用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户...2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需scope为 snsapi_
  • 授权访问官方文档 获取会员信息官方文档 下载支付宝sdk后解压放到extend目录下 ...参考文档 define('ALI_PATH',__DIR__.'/....创建控制器并写入代码 require ALI_PATH.'AopClient.php'; require ALI_PATH.'request/Alip...
  • 由于代网页授权需要component_access_token参数,所以 1.描述2中的{编_码}的源代码部分在哪?我需要获取这个值,并更新。原因如2 2.如果不更新component_access_token,是不是会造成旧的...
  • 一、这个文件微信授权使用的是OAuth2.0授权的方式。... 第三步:通过code换取网页授权access_token  第四步:使用access_token获取用户信息 <?php /** * 获取微信用户信息 * @author: ...
  • 调用几个接口,参数,token还有7200秒的失效,定时更新还是访问时检查判断再更新,是不是弄过的人都纠结过?很是麻烦,顿时头大了有么有?水不是一般的深,于是纷纷哭爹喊娘求大神骂张小龙。 我发现我废话太多了,...
  • 1.客户端会暴露 token授权服务器是会根据客户端传来的 redirect_url 返回给客户端 3xx 重定向状态码,然后客户端再把授权码 code 传给客户端服务器,首先前端(网页有源代码,手机app反编译)的都是不安全的,直接将...
  • 获取新浪开放平台的Access token

    千次阅读 2014-08-07 23:54:41
    最近想用树莓派结合传感器制作一个微博机器人,但是在申请新浪开放平台的Access token的过程中可谓是吃尽了口头,其中最主要的是对于使用Post的方式获得网页不懂。 在新浪开放平台创建一个应用很简单,而且获得App ...
  • 一、这个文件微信授权使用的是OAuth2.0授权的方式。主要有以下简略步骤: ... 第三步:通过code换取网页授权access_token  第四步:使用access_token获取用户信息  https://github.com/jijinduoduo/GetWxUse...
  • 调用几个接口,参数,token还有7200秒的失效,定时更新还是访问时检查判断再更新,是不是弄过的人都纠结过?很是麻烦,顿时头大了有么有?水不是一般的深,于是纷纷哭爹喊娘求大神骂张小龙。 我发现我废话太多...
  • Jupiter是一个初学者学python的很好的工具,有时候我们把网页关掉再通过http://localhost:8888/想进入之前的写代码页面却提示要输入密码的时候: 解决 通过Anaconda Promt,输入: jupyter notebook list,查看...
  • 网页中运行时出现了了"Uncaught SyntaxError: Unexpected token )" <html>的js错误 这一般是由于 语法错误 导致的。 于是我检查自己的代码: 发现这里多了一个逗号。 一般在这个问题的后面是什么标点,...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

网页token代码