關於微信登錄授權獲取unionid的方法


前言:微信登錄授權是目前普遍存在於小程序的,還有一種靜默授權方式是微信提供的但是不推薦使用,由於不同設備登錄openid是不同的那么我們應該怎樣拿到一個唯一的ID呢,下面做分享

wxml代碼

<button open-type="getUserInfo" bindgetuserinfo='userInfo'>授權</button>  //這兩個方法是官方提供使用的
wxjs代碼
//當用戶點擊觸發wx.getUserInfo
wx.getUserInfo({
       //成功后會返回你登錄掃碼的那個微信的相關信息 success(res) {
//console.log(res); var _getUserInfo = res; var _userInfo = JSON.parse(res.rawData); //_this.setData({ nickName: _userInfo.nickName, avatarUrl: _userInfo.avatarUrl });這里主要修改了顯示了用戶信息 /**登陸:獲取openid */ wx.login({ success(res) { //console.log(res); wx.request({ url: 'http://127.0.0.1:8000/api/v1/Index/getOpenid',//這里是后台的接口地址 method: 'post',//method data: { code: res.code, //上面成功返回的值 encryptedData: _getUserInfo.encryptedData,//下面成功返回的值 iv: _getUserInfo.iv//上面成功返回的值 }, success(res) { console.log(res); } }) } }) } })
//后端php代碼 獲取用戶登錄的相關信息方法
    public function getOpenid(){
        include_once "../wx/PHP/wxBizDataCrypt.php";//通過小程序提供的==>https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
        $data = request()->post();//獲取傳遞的值
        $appid = "xxxx";//登錄appid
        $secret = "xxxx";//secret密碼
        $iv = $data['iv'];//登錄成功會返回的小程序端口傳遞過來的
        $encryptedData = $data['encryptedData'];//同上傳遞過來的
        $code = $data['code'];//同上傳遞過來的
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";//get調用這個小程序接口
        $data = json_decode(file_get_contents($url),true);//返回一個字符串包含了openid
        // halt($data);
        $sessionKey = $data['session_key'];//獲取返回的解密方法
        $openid = $data['openid'];
        $pc = new \WXBizDataCrypt($appid, $sessionKey);
        $errCode = $pc->decryptData($encryptedData, $iv, $unionId );
        halt($uniont);//獲取解密后的unionid到這里你也是拿不到的需要在小程序開發平台綁定小程序

https://open.weixin.qq.com/cgi-bin/applist?t=manage/list&page=0&num=20&openapptype=65536&token=2e42c884ed21ae7091f66ba1d0c19f488a37b971&lang=zh_CN

 

到此你大概知道了吧openid是加密后的值我們只需要解密出來就可以得到唯一的unionid值

 


免責聲明!

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



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