关注微信公众号使其自动发送欢迎你关注消息
關注微信公眾號使其自動發送歡迎你關注消息
一般我們關注微信公眾號時。他都會自動推送一條消息。歡迎您關注了某公眾號。而今天我們所做的就是這個功能。
關注公眾號時我們需要獲取到用戶的一些個人基本信息。 而獲取基本信息就要看他的運行原理。到底是怎么運行。
當我們申請了一個微信號時,關注公眾號,公眾號會推送我們的關注事件給我們服務器。而我們服務器又沒有用戶信息。但是當我們注冊微信號時。一些信息會存放再騰訊服務器上。而騰訊服務器為了方便我們也給我們提供了一個獲取用戶信息的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服務器給要鏈接的客戶端授權
如果還有錯誤在阿里云服務器在安全組中添加一個安全記錄
云服務器ecs—找到實例—安全組—配置規則添加即可。
完后建立我們的表就好。
二、獲取access_token
調用access_token接口需要得到三個必須參數
apiid和secret在
之后獲取
三、獲取用戶信息
得到了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"]; }總結
以上是生活随笔為你收集整理的关注微信公众号使其自动发送欢迎你关注消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pandas 文件读取和导出
- 下一篇: ztree 指定节点清空_节点操作