日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/11 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关注微信公众号使其自动发送欢迎你关注消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關注微信公眾號使其自動發送歡迎你關注消息

一般我們關注微信公眾號時。他都會自動推送一條消息。歡迎您關注了某公眾號。而今天我們所做的就是這個功能。

關注公眾號時我們需要獲取到用戶的一些個人基本信息。 而獲取基本信息就要看他的運行原理。到底是怎么運行。
當我們申請了一個微信號時,關注公眾號,公眾號會推送我們的關注事件給我們服務器。而我們服務器又沒有用戶信息。但是當我們注冊微信號時。一些信息會存放再騰訊服務器上。而騰訊服務器為了方便我們也給我們提供了一個獲取用戶信息的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"]; }

總結

以上是生活随笔為你收集整理的关注微信公众号使其自动发送欢迎你关注消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。