粉絲用戶也稱為普通用戶,可以是從公眾號里自動獲取,也可以是從小程序里自動獲取,更可以是用戶自己注冊的。
#粉絲登錄
默認情況下粉絲是需要登錄的,如果涉及到未登錄的業務,可以Controller類使用構造函數
~~~
function __construct() {
$this->need_login = false; //不需要登錄,系統默認是true
$this->need_appinfo = false; //不需要公眾號信息,系統默認是true
parent::__construct (); //一定要調用父級
}
~~~
來告訴系統當前類或方法不需要登錄檢測
## 粉絲用戶登錄流程圖

因為微信網頁授權獲取用戶信息只有認證服務號有權限,因此在H5里,只有認證的服務號才能完成自動注冊,自動登錄的功能,其它類型的用戶只能通過普通訪問的方式實現用戶登錄。
但是一般在微信中,很多情況是不需要用戶自己注冊登錄的,但一些互動功能往往需要區分開用戶與其它用戶之間的信息。比如在一個訂閱號里做一個簡單投票功能,不大可能需要用戶先注冊后登錄才能投票。也就是說其實就算是不需要登錄,系統也需要有區分游客操作的能力。那么如何區分呢?
WeiPHP引入了負uid的概念,即用戶UID大于0的,肯定是登錄過的用戶,而沒有登錄的游客,系統也會分配一個小于0的UID,這樣通過不同的負uid就可以區分不同的游客。
而負uid的分配方法是:
> 待補充內容
## 一些旁門左道
除了負uid的方案,可以結合微信公眾號的特點來實現部分用戶的初始化:
獲取openid:
所有的公眾號有微信公眾號接收消息的 權限,而接收的信息里帶有openid信息,因此可以讓用戶回復關鍵詞或者點擊菜單,然后系統回復一條圖文信息給用戶,這條圖文信息的跳轉地址里帶上openid就可以,這樣用戶點擊圖文進入H5頁面時,系統就可以通過URL里帶的openid來識別用戶。
獲取用戶信息:
因為認證訂閱號有獲取用戶基本信息的權限,因此認證訂閱號可以在用戶關注時為用戶自動注冊信息,再結合上面獲取openid的方法,也能部分實現類似認證服務號自動注冊,自動登錄的功能。為什么說是部分?因為一個微信的頁面,除了正常從微信公眾號進入外,還可以分享到朋友圈等多個地方,別人直接通過分享出來的URL進入,這部分用戶是無法獲取到openid和用戶信息的。
# 小程序粉絲
> 待補充內容
# 粉絲標簽
剛開始時微信公眾號的粉絲是通過粉絲分組來實現粉絲區分的,現在已經修改為粉絲標簽來實現了,而且一個粉絲可以同時最多設置3個標簽
如果是認證的公眾號,就有設置粉絲標簽的接口權限,這時WeiPHP系統里的標簽會自動與微信公眾號平臺的標簽進行同步,也就是說當用戶在WeiPHP系統里對粉絲標簽進行增加,修改,刪除操作甚至給粉絲打標簽時,會自動同步到公眾號平臺。
如果公眾號沒有標簽的接口權限,那么運營人員在WeiPHP系統里設置的標簽只能在系統內使用,無法同步到公眾號平臺
# 粉絲昵稱和備注名
由于微信用戶的昵稱可能有一些特殊字符,這些特殊字符會導致保存數據庫出錯,因此WeiPHP對昵稱保存時做了json_encode處理,使用getUserInfo函數獲取用戶信息時,昵稱也會作json_decode處理。
公眾號運營人員可以給粉絲設置備注名,備注名的信息會保存在wp_public_follow的remark字段。如果粉絲設置了備注名,粉絲的昵稱就顯示備注名,前端只需要統一使用nickname這個變量顯示昵稱就行,具體顯示備注名還是原來的昵稱由系統自動來判斷
使用方法如:
~~~
$user = getUserInfo($uid);
echo $user['nickname'];
~~~
>[info] 由于getUserInfo統一對用戶各種數據做了預處理,并且做了緩存處理,因此強烈開發者在獲取用戶信息時,直接通過getUserInfo來獲取就行,不建議直接從數據庫獲取用戶信息
getUserInfo 返回的數據有:
> 這里的參數表格,待補充
# 同步用戶信息
> 待補充內容
## 定時自動同步
> 待補充內容
## 手工刷新同步
> 待補充內容
# UnionID
如果開發者擁有多個移動應用、網站應用和公眾帳號,可通過獲取用戶基本信息中的unionid來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號,用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。
如果用戶信息里帶有unionid,這個內容會和openid一樣保存在wp_public_follow表里。同時用戶信息主表wp_user會通過unionid來實現去重功能,從而實現同一個用戶,在多個公眾號下共用一個用戶UID,滿足積分,獎品等用戶業務數據的一致性,詳細實現請見粉絲關注的注冊流程
# 綁定手機號
對于自動注冊的用戶,是缺少手機號這一項信息的。系統默認也是不需要綁定手機號,但如果公眾號要統一開啟綁定手機號的限制,公眾號運營人員可以在用戶模塊中開啟綁定手機號的開關,一旦開啟后,所有未綁定的手機號的用戶在進入H5頁面時都會先要求綁定手機號后才能繼續往下操作。
>這里應該有開啟的操作截圖
如果不想在全部頁面都加上綁定手機號的限制,只想在某些特定的業務流程里才要求綁定手機號,運營人員只需要把綁定手機號的開關設置為關閉,然后開發者可以在需要的地方使用以下函數作限制。
~~~
need_mobile();
~~~
這個函數會自動判斷當前用戶是否已經綁定過手機號,如果沒有綁定會自動跳轉到綁定手機界面,綁定后也會自動跳轉回來繼續之前的操作
# 初始化用戶信息
無法是普通注冊用戶還是自動注冊用戶,帶有的用戶資料很有限,如果這些用戶資料不能滿足業務的需要,就需要通過擴展用戶資料來實現更多的用戶信息收集,對于粉絲來說就是還需要一步初始化用戶信息的步驟。
首先是超級管理員可以在后臺統一增加用戶擴展字段信息
>這里的擴展字段管理列表截圖
然后運營人員在各個公眾號的用戶模塊的擴展字段里設置開啟或者關閉初始化用戶信息的開關,如果超級管理員有設置了擴展字段時,開關默認是開啟的,否則默認是關閉的
>這里應該有開關界面的截圖
用戶模塊里顯示超級管理員預先配置好的擴展字段列表,運營人員可以勾選哪些字段用于這個公眾號(默認全部勾選)
如果超級管理員設置的字段不滿足這個公眾號的擴展需求,運營人員也可以單獨為公眾號自行設置擴展字段
>這里的擴展字段管理列表截圖
粉絲進入公眾號后,系統會自動判斷是否已經初始化,如果沒有初始化時系統會要求先初始化信息才能繼續往下操作。
類似綁定手機號,如果不想在全部頁面都要求用戶初始化信息,只想在某些特定的業務流程里才要求,運營人員只需要把初始化的開關設置為關閉,然后開發者可以在需要的地方使用以下函數作限制。
~~~
need_init_user();
~~~
這個函數會自動判斷當前用戶是否已經初始化過,如果沒有會自動跳轉到初始化界面,完成后也會自動跳轉回來繼續之前的操作
# 審核認證
有些業務需要對全部粉絲審核后才能使用,這時需要一個審核功能,而有些業務只需要對一部分粉絲審核才能使用更多服務,這時需要一個認證功能。也就是說審核是針對所有粉絲用戶,認證只是針對部分粉絲用戶。
一般情況下,審核或者認證是結合上面的初始化用戶信息功能來一起實現的。比如有公眾號需要用戶初始化員工號,姓名,然后運營人員審核通過后才能繼續使用。又比如有公眾號里的粉絲可以申請升級為代理商,需要粉絲先初始化身份證,姓名,電話,銀行卡等信息,運營人員認證通過后就才可以升級成為代理商。
>[info] 考慮大部分使用場景和保持功能簡潔些,審核和認證只能二選一,不支持同時開啟
## 審核開啟
要開啟審核功能,需要在運營人員用戶模塊的審核功能把開關打開(默認是關閉的)即可
>這里應該有截圖
開啟審核后,在粉絲管理列表中就會多出一個審核的按鈕,信息中也會多出一個審核狀態,在搜索欄里也可以按審核狀態過濾粉絲
>這里應該有截圖
## 認證開啟
要開啟認證功能,需要在運營人員用戶模塊的認證功能把開關打開(默認是關閉的)即可
>這里應該有截圖
要使用認證功能,需要開發者在需要認證才能使用的業務里加上以下限制就可以
~~~
need_audit()
~~~
這個函數會自動判斷當前用戶是否已經認證過,如果沒有會自動跳轉到初始化界面,如果已初始化,只是還沒認證通過,會顯示正在認證中,或者認證被駁回,也會顯示駁回原因
開啟認證后,在粉絲管理列表中就會多出一個認證的按鈕,信息中也會多出一個認證狀態,在搜索欄里也可以按認證狀態過濾粉絲
>這里應該有截圖
# 粉絲關注/取消關注
粉絲關注或者取消關注時,微信都會向WeiPHP系統發送一條通知信息,因此我們可以在收到這信息時進行相關的數據處理。
粉絲在關注與取消關注公眾號時,微信會把這個事件推送到WeiPHP。方便我們給粉絲下發歡迎消息或者做帳號的解綁。
微信服務器在五秒內收不到響應會斷掉連接,并且重新發起請求,總共重試三次。
關于重試的消息排重,推薦使用FromUserName + CreateTime 排重。
假如服務器無法保證在五秒內處理并回復,可以直接回復空串,微信服務器不會對此作任何處理,并且不會發起重試。
推送XML數據包示例:
~~~
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>
~~~
參數說明:
ToUserName 開發者微信號
FromUserName 發送方帳號(一個OpenID)
CreateTime 消息創建時間 (整型)
MsgType 消息類型,event
Event 事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)
## 粉絲關注
當粉絲關注公眾號時,系統需要作出以下處理

## 取消關注
由于WeiPHP系統與粉絲相關的業務數據有很多,因此粉絲取消關注后,系統并非物理刪除粉絲數據,只是把粉絲的狀態由關注設置為未關注狀態而已,這個狀態保存在 public_follow 表中的has_subscribe

實現的代碼在:(這里應該有代碼文件的路徑)
~~~
這里應該有代碼
~~~
- 序言
- 基礎
- 安裝WeiPHP
- 目錄結構
- 錯誤碼分配
- 錯誤碼問答系統
- 入答疑群方法
- 快速入門
- 談談開發目標
- 前期準備
- 增加應用
- 編寫微信響應代碼
- 激動的時刻_體驗測試
- 用戶
- 用戶體系
- 超級管理員
- 運營人員
- 粉絲
- 掃碼登錄
- 公眾號
- 手工綁定
- 一鍵綁定
- 自定義菜單
- 微信支付
- 微信平臺支付配置
- 公眾號支付
- 原生掃碼支付
- 異步接收支付結果
- 現金紅包
- 發放普通紅包
- 查詢紅包記錄
- 紅包記錄數據結構
- 現金支付
- 下發支付
- 查詢支付記錄
- 現金支付數據結構
- 刷卡支付
- 提交刷卡支付
- 查詢刷卡支付記錄
- 撤銷刷卡支付
- 支付記錄數據結構
- API服務
- oauth2.0安全驗證
- 后臺配置API
- 小程序
- HTTPS部署
- 騰訊云服務器部署
- 阿里云HTTPS部署
- 自發證書HTTPS部署
- openssl升級到1.02
- 自動登錄注冊
- 短信驗證碼
- 網絡請求
- 上傳圖片
- 生成事件二維碼
- 小程序支付
- 小程序微信支付配置
- 小程序調用支付功能
- 模板消息
- 消息模板配置
- 支付后發模板消息
- 提交表單后發模板消息
- 卡券(會員卡、優惠券)
- 客服
- 與公眾號互通
- 微信開放平臺
- 一鍵綁定公眾號
- 積分等級
- 積分規則
- 積分操作
- 積分等級數據結構
- 日志
- 后臺日志
- 運營日志
- 接口日志
- 調試日志
- 錯誤日志
- 日志數據結構
- 應用管理
- 應用管理列表
- 新增應用
- 應用開發
- 安裝應用
- 模型
- 模型介紹
- 模型管理
- 新增加模型
- 新增加字段
- 列表定義
- 通用視圖模板
- 定時任務
- 定時任務介紹
- 配置定時任務
- 開啟定時器
- 系統自觸發
- window定時器
- Linux定時器
- Mac定時器
- 定時任務數據結構
- 商業應用
- 分銷商城
- 教育培訓
- 搖紅包
- 夢云社區
- 婚慶派
- 部署
- Linux服務器一鍵安裝包部署
- Window集成包部署