获取access_token并保存到服务器MySQL数据库

1.新建一个专门用于获取access_token的文件,包含一个获取类

2.类中定义两个方法:1个用于获取token,另外一个用于连接服务器,将数据保存到云服务器的数据库

4.文件放到服务器定时刷新,使用php函数 ignore_user_abort();

//tips:不推荐使用,极其不稳定,其他任务执行时会打乱这个任务!!!

ignore_user_abort();
set_time_limit(0);

向数据库中每分钟添加一个元素,测试结果 如下:

tips:  把文件放到服务器后要先运行一下,然后再关掉。

逻辑部分放到do里面,while(true)可以实现一个死循环。 

3.demo:access_token.php

<?php
/*
 * 定时获取access_token,存到数据库,实现公用
 * */
    $getToken = new getAccessToken();
    $getToken->accessTokenCallBack();
    $getToken->sqlConnect();
//获取token类
class getAccessToken
{
    public $access_token;//用来保存token
    public $flag = 1;

    //获取token
    public function accessTokenCallBack()
    {
        define("APPID", "xxxxxxxx");//你的appid
        define("APPSECRET", "xxxxxxxxxx");//你的appsecret
        $appId = APPID;
        $appSecret = APPSECRET;

        //请求地址
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
        //发送get请求,并将返回的json转化为数组,提取出token
        $ch = curl_init();//c初始化一个cURL会话
        curl_setopt($ch, CURLOPT_URL, $url);//将URL设置为我们需要的URL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);//获取json返回数据
        curl_close($ch);
        $jsonInfo = json_decode($output, true);
        $this->access_token= $jsonInfo["access_token"];
    }
    //连接数据库,并将新的值赋到对应表中!tips:需要已经创建好数据库的表
    public function sqlConnect(){
        $hostName = "w.rdc.sae.sina.com.cn";//你的数据库地址
        $usrName = "xxxxxxx";//用户名,密码,端口号,数据库名
        $passWord = "xxxxxxxxxx";
        $port = "3306";
        $dbname = "xxxxxxxxxx";

        $content = mysqli_connect($hostName,$usrName,$passWord,$dbname,$port);//连接函数,返回连接句柄
        mysqli_set_charset($content,'utf-8');
        if($content){
            echo "连接成功--";
        }else{
            die("连接失败:".mysqli_connect_error());
        }
        if($this->access_token == NULL){
            echo "获取access_token失败!";
        }else {
            //插入语句
           // $sqlStr = "insert into Access_token(token,flag)
           // VALUES('$this->access_token','$this->flag')";
            //更新语句
            $sqlStr = "update Access_token set token = '$this->access_token'";
            if (mysqli_query($content, $sqlStr)) {
                echo "更新成功";
            } else {
                echo "更新失败:" . mysqli_error($content);
            }
        }
        mysqli_close($content);
    }
}

4.容易出现问题的地方:

1)这版code适用于数据库已经建好表。而且表中已经赋了初值。token要至少留出512个字节的空间。创建数据表语句

$sql = "CREATE TABLE Access_token (
token VARCHAR(512) NOT NULL, 
flag int(1) NOT NULL
)";

 2)在赋值语句中,因为赋的是变量名字,所以变量名字外必须用单引号''括起来,否则写入数据库内容失败。给新建数据表赋值

sql1 = "insert into Access_token(token,flag)
VALUE ('$this->access_token',$this->flag)";

3)在连接数据库时,使用mysqli,因为mysql不安全。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值