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端和行動端單獨分開,不適合自適應網站開發。
以上是微信PC端登入與手機端登入邏輯分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!