PC端登錄需要在微信開放平臺申請,而移動端授權登錄只需要有已經認證的服務號即可。然后同一個網站平臺,用同一個微信用戶去登錄,會發現PC端獲取的微信用戶openid和移動端不同,這個問題如何解決?
一、官方做法
我們需要在微信開放平臺綁定微信服務號,這個時候就有一個奇葩的事情出現,如果該微信服務號沒有申請微信小程序,那么微信開放平臺提示必須先開通小程序。
那么在微信開放平臺綁定微信服務號后,我們就可以獲取到統一的一個UnionID,這個UnionID無論是Pc端微信登錄還是移動端微信登錄,都是統一的。
我們看下官方的解釋:
UnionID機制的作用說明:如果開發者擁有多個移動應用、網站應用和公眾帳號,可通過獲取用戶基本信息中的unionid來區分用戶的唯一性,因為同一用戶,對同一個微信開放平臺下的不同應用(移動應用、網站應用和公眾帳號),unionid是相同的。
二、另辟蹊徑的做法
場景1、
1、手機號注冊-》成功。
2、該用戶第一次使用PC端微信登陸,則到達綁定手機號頁面,如果該手機號已經注冊,則更新數據表字段weixin_open_id。
3、該用戶第二次使用PC端微信登陸,更新最后一次登錄時間。
場景2、
1、手機號注冊-》成功。
2、該用戶第一次使用移動端微信登陸,則到達綁定手機號頁面,如果該手機號已經注冊,則更新數據表字段weixin_open_id_m。
3、該用戶第二次使用移動端微信登陸,更新最后一次登錄時間。
場景3、
1、該用戶第一次使用PC端微信登陸,則到達綁定手機號頁面,綁定手機號,插入記錄。
2、該用戶第二次使用PC端微信登陸,更新最后一次登錄時間。
場景4、
1、該用戶第一次使用移動端微信登陸,則到達綁定手機號頁面,綁定手機號,插入記錄。
2、該用戶第二次使用移動端微信登陸,更新最后一次登錄時間。
總之,無論用戶第一次是手機號注冊還是PC端微信登陸、移動端微信登陸,只要是第一次登陸,我們都會拿到用戶的手機號,那么手機號作為該用戶憑證。
三、需要注意
我們可以用如下代碼判斷是PC微信登錄還是移動端微信登錄:
if(request()->isMobile()){ //移動端 }else{ //PC端 }
PC微信登錄和移動端微信登錄需要分別處理。
最后
我們還是建議大家用官方做法,如果遇到某些情況可以使用第二種。另外對于大型網站來說,PC端和移動端單獨分開,不適合自適應網站開發。