還是程式碼好用,幾步就能判斷用戶是否已追蹤公眾號
現在的活動,很多都引導用戶關注公眾號,才能參與活動,如何判斷用戶是否已關注公眾號,其實很簡單,照著本文章,你就不會再犯愁了,本文的php代碼很詳細的解說了。
一、微信公眾平台設定
1. 取得appid, appsecret,新增白名單
登入微信公眾平台,進入基本設定。開發中需要用到兩個參數,appId和appSecret(appSecret只展示一次,需保存下來,否則需要重置取得)。
取得access_token時需要新增IP白名單。
點選檢視
點選修改
#2. 新增網頁授權
#進入公眾號設定=》功能設定=》網頁授權網域名稱點選設置,input框中輸入授權回呼頁的網域參考第1點(只能填寫一個),下載第3點中的txt文檔,上傳至伺服器的根目錄。
二、php後端實作
1. 取得全域token
此token有效期限為2小時,可以暫存起來,過期後需要重新獲取。
PS: 專案中必須走同一個接口,否則容易互刷導致過期。
public static function getToken($appid, $appsecret){ $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret; return Curl::callWebServer($url); } 正确返回结果: { "access_token": "ACCESS_TOKEN", "expires_in": 7200 } 返回结果参数说明: 参数 说明 access_token 获取到的全局token expires_in 凭证有效时间,单位:秒 错误返回结果: {"errcode": 40013, "errmsg": "invalid appid"} 返回结果参数说明: 返回码 说明 -1 系统繁忙,此时请开发者稍候再试 0 请求成功 40001 AppSecret错误或者AppSecret不属于这个公众号,请开发者确认 AppSecret的正确性 40002 请确保grant_type字段值为client_credential 40164 调用接口的IP地址不在白名单中,请在接口IP白名单中进行设置。(小程序及小游戏调用不要求IP地址在白名单内。)
2. 取得使用者關聯公眾號的openid
分兩步,先要取得到使用者對公眾號的授權碼,然後拿這個碼去取得臨時access_token和openid。
取得使用者授權碼
public static function getCode($appId, $redirect_uri, $state=1, $scope='snsapi_base', $response_type='code'){ $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appId.'&redirect_uri='.$redirect_uri.'&response_type='.$response_type.'&scope='.$scope.'&state='.$state.'#wechat_redirect'; header('Location: '.$url, true, 301); } 正确返回结果: 返回code码,并且跳转回调页面$redirect_uri 错误返回结果: {"errcode": 10003, "errmsg": "redirect_uri域名与后台配置不一致"} 返回结果参数说明: 返回码 说明 10003 redirect_uri域名与后台配置不一致 10004 此公众号被封禁 10005 此公众号并没有这些scope的权限 10006 必须关注此测试号 10009 操作太频繁了,请稍后重试 10010 scope不能为空 10011 redirect_uri不能为空 10012 appid不能为空 10013 state不能为空 10015 公众号未授权第三方平台,请检查授权状态 10016 不支持微信开放平台的Appid,请使用公众号Appid
透過getCode取得的code換取網頁授權的access_token和openid
public static function getAccessToken($code, $appid, $appsecret, $grant_type='authorization_code'){ $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type='.$grant_type.''; return Curl::callWebServer($url); } 正确返回结果: { "access_token": "ACCESS_TOKEN", "expires_in": 7200, "refresh_token": "REFRESH_TOKEN", "openid": "OPENID", "scope": "SCOPE" } 返回参数说明 参数 描述 access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 expires_in access_token接口调用凭证超时时间,单位(秒) refresh_token 用户刷新access_token openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID scope 用户授权的作用域,使用逗号(,)分隔 错误返回结果: {"errcode":40029, "errmsg":"invalid code"}
3. 取得使用者資訊
#使用第2步驟中取得的openId和第1步驟中取得的token去取得使用者資訊
public static function getUserInfo($openId, $token){ $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$token.'&openid='.$openId.'&lang=zh_CN'; return Curl::callWebServer($queryUrl, '', 'GET'); } 正确返回结果: { "subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "广州", "province": "广东", "country": "中国", "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" "remark": "", "groupid": 0, "tagid_list":[128,2], "subscribe_scene": "ADD_SCENE_QR_CODE", "qr_scene": 98765, "qr_scene_str": "" } 返回参数说明: 参数 说明 subscribe 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。 openid 用户的标识,对当前公众号唯一 nickname 用户的昵称 sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 city 用户所在城市 country 用户所在国家 province 用户所在省份 language 用户的语言,简体中文为zh_CN headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 subscribe_time 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间 unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。 remark 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注 groupid 用户所在的分组ID(兼容旧的用户分组接口) tagid_list 用户被打上的标签ID列表 subscribe_scene 返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENEPROFILE LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他 qr_scene 二维码扫码场景(开发者自定义) qr_scene_str 二维码扫码场景描述(开发者自定义) 错误结果: {"errcode":40013,"errmsg":"invalid appid"}
三、使用
判斷是否有關注過,此處為入口:
public function isConcern($appId, $appSecret) { $param = ''; // 如果有参数 $this->getCode($appId, U('callback', 'param='.$param), 1 ,'snsapi_base'); }
授權後回呼
public function callback(){ $isconcern = 0; $code = $this->_get('code'); $param = $this->_get('param'); $appId = C('appId'); // config中配置 $appSecret = C('appSecret'); $accessTokenInfo = $this->getAccessToken($code, $appId, $appSecret); $openId = $accessTokenInfo['openid']; $accessToken = $accessTokenInfo['access_token']; $token = $this->getToken($appId, $appSecret); $userInfo = $this->getUserInfo($openId, $token['access_token']); if($userInfo['subscribe'] == 1){ $this->assign('userInfo', $userInfo); $isconcern = 1; // 已关注 } else { $isconcern = 0; // 未关注 } $this->assign('openid', $openId); $this->display('page'); }
此時頁面上可以取得到userInfo和isconcern,isconcern為1時表示已關注公眾號,否則未關注。
相關推薦:
微信公眾號開發微信公眾號判斷使用者是否已關注php程式碼解析
以上是還是程式碼好用,幾步就能判斷用戶是否已追蹤公眾號的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。
