PHP(TP5)獲取微信小程序unionId


  最近做一個項目,微信小程序、Android、IOS同步進行開發,小程序從微信內部直接登錄,Android、IOS也需要用微信登陸,為了確定同一用戶的身份,需要使用到微信的unionId。

  將小程序、APP都綁定到同一微信公眾平台后,Android、IOS能直接獲取到unionId,但在小程序上獲取unionId需要用到后端解密。

  網上有一些獲取unionId的方法試過一些,有點復雜,所以我總結出一個比較簡單的。

  網上下載微信官方提供的PHP的demo,會有3個文件:

  其實在demo里已經有用法了,代碼很簡單明了:寫入appid、sessionKey、encryptedData、iv四個參數即可。除了appid是固定的外,其他都由前端傳過來。

  這個demo只是返回解密unionId成功,即code為0或是其他錯誤code,真正的unionId值,是wxBizDataCrypt.php里的$data的值,可以改為返回該值

  TP5實現代碼:

    //獲取微信小程序unionId
    public function getUnionId()
    {
        $sessionKey = Request::instance()->param("sessionKey", '', 'htmlspecialchars');
        $encryptedData = Request::instance()->param("encryptedData", '', 'htmlspecialchars');
        $iv = Request::instance()->param("iv", '', 'htmlspecialchars');
        $appid = 'wxxxxxxxxxxxxxx';
        //引入文件
        vendor('wxunionid.wxBizDataCrypt');
        $pc = new \WXBizDataCrypt($appid, $sessionKey);
        $unionId = $pc->decryptData($encryptedData, $iv, $data);
        return $unionId;
    }

  由於小程序上一個用戶對一個小程序的openid是相同的,unionId也相同,我們每次解析unionId后可以將openid和unionId保存在數據庫,用unionId作為用戶唯一表示,小程序登陸的時候先使用openid查找數據庫是否有openid對應的unionId值,有則直接返回用戶數據進行登陸(目前openid可以直接獲取,但是unionId需要用戶手動授權,這樣用戶只需一次授權以后即可“無痕登陸”)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM