关注微信公众号使其自动发送欢迎你关注消息

一般我们关注微信公众号时。他都会自动推送一条消息。欢迎您关注了某公众号。而今天我们所做的就是这个功能。

关注公众号时我们需要获取到用户的一些个人基本信息。 而获取基本信息就要看他的运行原理。到底是怎么运行。
当我们申请了一个微信号时,关注公众号,公众号会推送我们的关注事件给我们服务器。而我们服务器又没有用户信息。但是当我们注册微信号时。一些信息会存放再腾讯服务器上。而腾讯服务器为了方便我们也给我们提供了一个获取用户信息的api。我们调用这个api就可以获取到用户的信息。

而调用获取用户信息接口的时候。我们发现了有一个必填参数时access_token,所有现在我们就必须要先去获取到access_token。
tips:而我们这里也要注意access_token的一些特性:
access_token的存储至少要保留512个字符空间
access_token的有效期目前为2个小时,需定时刷新
Access_token 每天能被调用的次数很少
重复获取将导致上次获取的access_token失效。
所以我们需要去服务器建一个数据库去用来存放access_token还有一会要获取到的用户基本信息

一、服务器上建立数据库

使用navicat链接linux上的数据库

建立后测试链接看是否可以正常连接上数据库
如果出现上述的错误。原因是因为我们mysql是一个安全性能较高的软件,不能说任何人都可以连接。我们要想连接需要mysql服务器给我们的客户端进行授权。所以我们要进入linux系统中通过mysql命令进入到mysql服务器中
让mysql服务器给要链接的客户端授权

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

如果还有错误在阿里云服务器在安全组中添加一个安全记录
云服务器ecs—找到实例—安全组—配置规则添加即可。
完后建立我们的表就好。

二、获取access_token


调用access_token接口需要得到三个必须参数
apiid和secret在
之后获取

//获取access_tokenpublic function get_access_token(){//刚进来先判断数据库中是否有access$access = AccessToken::orderBy("id","desc")->first();//数据库中没有或者时间超过了7000s 则重新获取accessif(!$access || time()-$access->access_token_time > 7000){//获取appid$appid = "wx1d72e376cd0e0cea";//获取secret$secret = "bc0f301236d4db2b20db3dc7cea63c14";//调用access_token接口$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;//get请求接口$result = $this->http_get($url);//得到的json字符串转为数组形式$result = json_decode($result,true);//判断是否请求成功if(isset($result["access_token"])){//表示请求成功  存入数据库$access_token = new AccessToken();//token值$access_token->access_token = $result["access_token"];//获取到的时间$access_token->access_token_time = time();//存入数据库$access_token->save();//返回数据return $result["access_token"];}else{//表示失败,返回falsereturn false;}}else{//直接数据库中获取return $access->access_token;}}

三、获取用户信息

得到了access_token我们直接调用接口去获取

   $obj = $this->receiveMsg();//接收消息//这个在前面文章有定义此方法//判断消息类型switch ($obj->MsgType){//事件类型case "event"://订阅事件if($obj->Event=="subscribe"){//获取用户信息$openid = $obj->FromUserName;//获取access_token$access_token = $this->get_access_token();//获取用户信息接口$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";//调用接口$result = $this->http_get($url);//返回的是json字符串转为数组$result = json_decode($result,true);//判断是否请求成功if(empty($result["errcode"])){//为空表示成功//查询数据库中是否有此数据$check = Fans::where('openid',$openid)->first();if(!$check){//没有查询到将数据存放到数据库中Fans::create($result);//给出提示$content = "欢迎你关注我们的微信公众号";}else{//查询有此数据修改他的关注状态为1$check->status=1;$check->save();$content="欢迎你再次关注我们的微信公众号";}}else{//不为空表示失败$content = "关注失败";}}//取消订阅事件if($obj->Event=="unsubscribe"){//获取用户信息$openid = $obj->FromUserName;//查询是否有该openid$check = Fans::where('openid',$openid)->first();//如果有则修改状态为0if($check){$check->status = 0;$check->save();$content = "取消订阅成功";}else{$content = "取消订阅失败";}}//发送消息$this->check($content);//这是我的调试方法 没有用$this->responseText($obj,$content);//这个在前面文章有定义此方法break;

我们这里将用户信息保存到数据库中时需要设置Model的白名单

<?phpnamespace App\Model;use Illuminate\Database\Eloquent\Model;class Fans extends Model
{//定义表名protected  $table = "fans";//定义主键protected $primaryKey = "id";//关闭时间戳public $timestamps = false;//设置白名单protected $fillable = ['openid',"nickname","sex","city","province","country","headimgurl","subscribe_time"];
}

关注微信公众号使其自动发送欢迎你关注消息相关推荐

  1. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

    太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法.通过薅羊毛的方式,落地了 Free Arch 架构. 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新 ...

  2. php如何判断是否关注,php如何判断用户是否关注微信公众号

    这篇文章主要为大家详细介绍了php判断用户是否关注微信公众号,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否 ...

  3. WordPress插件-Erphp Weixin Scan关注微信公众号一键登录网站

    介绍: Erphp Weixin Scan是某板兔开发的一款关注微信公众号一键登录网站的WordPress插件. 目前只有认证的服务号有生成带参数的二维码接口权限(注意不要使用测试号,测试号虽然有服务 ...

  4. 无需关注微信公众号破解openwrite验证

    前言 在网上查看很多博主的个人博客的文章的时候,要查看全文的时候需要关注博主的微信公众号获取验证码才行,以前自己还是老老实实的关注,但是发现关注了之后几乎没有技术文章,而是一次又一次发软广,不是卖课就 ...

  5. 微信公众号页面如何跳转至关注公众号页面

    微信公众号页面如何跳转至关注公众号页面 1.获取微信公众号biz字段 a.点击公众号 历史文章,在浏览器中打开 b.鼠标右键,查看网页源代码 c.复制红框的字段 即为biz字段 2.拼接biz字段成完 ...

  6. thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现

    thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...

  7. 网页中怎样引导用户关注微信公众号

    为什么有这种需求? 的确,如果是让用户直接关注微信公众号,扫公众号的二维码,或者在微信里面长按识别二维码即可.但是有时候的业务需求可能是:在自己写的一个页面中,需要引导用户去关注公众号. 我们知道,二 ...

  8. 微信扫码登录,微信公众号生成二维码,关注登录nodejs+vue

    微信公众号生成二维码,关注后扫码登录 技术栈为nodejs+vue 有不懂的可以加我微信yizheng369 1.效果 初始: 关注后: 2.源码 此项目为前后端分离项目,前后端代码都在这个仓库里, ...

  9. WordPress关注微信公众号回复可见和阅读更多的方法

    WordPress关注微信公众号回复可见和的方法 自己建立网站后怎么为公众号吸粉?强制要求关注公众号并回复后内容可见就是一个很有效果的公众号导流方法.本文给大家推荐一种需要关注公众号后才能查看网站内容 ...

最新文章

  1. js中的if与Java中的if_JavaScript if...else 语句
  2. 16.Hadoop架构再探讨第2部分
  3. 跟锦数学190314
  4. ios UITableView顶部向下偏移
  5. 批量上传插件(flash,html5,jquery)
  6. 面向对象——一起来复习托付与事件!
  7. VS2010断点设置技巧
  8. 5G的7大用途,你知道几个?
  9. shell echo 彩色字体
  10. 编程工作枯燥、代码质量不高?华为云 MVP 来支招!
  11. 自动人脸识别高颜值抖音小姐姐并点赞(python)
  12. 刘意JavaSE 学习笔记 Day19-Day21——异常,IO(File类/字符流/字节流)
  13. 本程序是三菱FX3U PLC编写的铝材过秤包装平台
  14. react 中加载静态word文档(或加载静态的html文件)
  15. php文本框添加表情,仿微信在对话框文字中插入Emoji表情包
  16. 如何转换图片格式为jpg?教你两种转换方法
  17. [CIKM 2019]Balance in Signed Bipartite Networks
  18. MySQL 安装详细步骤
  19. deb 中标麒麟_最新版国产Linux操作系统“中标麒麟”体验
  20. 【Slurm】Slurm使用故障workaround记录

热门文章

  1. 委托BegionInvoke和窗体BegionInvoke
  2. Launch Instruments
  3. append生成新变量的时候,没有如预期(It's a feature,not a bug?)
  4. R语言:ggplot2精细化绘图——以实用商业化图表绘图为例(转)
  5. JDK各版本新增的主要特性
  6. Maven排除项目中同名不同版本的jar
  7. Linux 的mv命令
  8. oracle下lag和lead分析函数
  9. python的基本语术_一起学python-彻底掌握专业术语“变量”的概念
  10. sqllite事务和MySQL事务_Android学习---SQLite数据库的增删改查和事务(transaction)调用...