91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在微信公眾號中實現一個掃碼獲取微信用戶信息功能

發布時間:2021-02-05 18:10:35 來源:億速云 閱讀:1118 作者:Leah 欄目:開發技術

如何在微信公眾號中實現一個掃碼獲取微信用戶信息功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

第一步:就是二維碼的生成 

1.首先要確定第一個二維碼,因為既然是掃碼,肯定是要第一個二維碼的,也就是第一人才可以。我將第一個二維碼的唯一值(id)設置成零,然后開始我的編寫

2.既然是二維碼,我用了phpqrcode二維碼生成插件,二維碼的生成可以在本地編寫,查看效果后再上傳服務器

(1)從網上下載下phpqrcode插件包,將它放到thinkphp的文件里,路徑如下:ThinkPHP\Library\Vendor ,截圖如下:

如何在微信公眾號中實現一個掃碼獲取微信用戶信息功能

(2)二維碼的生成,在調用顯示二維碼的控制器的方法中調用這個插件包,然后設置下掃描后跳轉的URL就好了,代碼如下:

$url ="http://www.baidu.com";
$level=3;
$size=4;
Vendor('phpqrcode.phpqrcode'); //引入插件
$errorCorrectionLevel = intval($level) ;//容錯級別
$matrixPointSize = intval($size);//生成圖片大小
//生成二維碼圖片
$object = new \QRcode(); 
$path = "Public/ER/1.png"; //本地文件存儲路徑
$object->png($url, $path, $errorCorrectionLevel, $matrixPointSize, 2);

這只是實現生成二維碼并且可以進入二維碼指定的網址,真正要實現的目的是掃帶有參數的二維碼,獲取微信用戶的信息

下面就是怎么實現生成帶有參數的二維碼   

3.(1)要用到微信的網頁授權,就要用到公眾號的幾個參數:1是AppID 2是AppSecret  這是公眾號申請成功后分配下來的

(2)利用這兩個參數,然后再配合獲取access_token的值就可以了

代碼如下(掃描后跳轉到getUserInfo方法,并且把唯一鍵值傳過去):

$tid = 0; //傳值的參數
$level=3;
$size=4;
Vendor('phpqrcode.phpqrcode');
$errorCorrectionLevel = intval($level) ;//容錯級別
$matrixPointSize = intval($size);//生成圖片大小
//生成二維碼圖片
$object = new \QRcode();
$path = "Public/ER/" . $tid . ".png"; //本地文件存儲路徑
$object->png($url, $path, $errorCorrectionLevel, $matrixPointSize, 2);
$appid='******'; //公眾號唯一標識
$redirect_uri = urlencode ( 'http://www.****.net/index.php/Admin/Sindex/getUserInfo?id='.$tid ); //這個是設置參數和授權后重定向的回調鏈接地址
//snsapi_userinfo彈出授權頁面,可通過openid拿到昵稱、性別、所在地 snsapi_base ,不彈出授權頁面,直接跳轉,只能獲取用戶openid 
$url ="https://open.weixin.qq.com/connect/oauth3/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";

 下面是寫跳轉后的操作  

(1)接收傳過來的值

(2)取得openid

(3)根據全局access_token和openid查詢用戶信息 

(4)將信息寫入數據庫

獲取openid或者其他的東西,用到下面的方法,可以快速截取到需要的東西

function getJson($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 curl_close($ch);
 return json_decode($output, true);
}

 接下來就是將上面的步驟逐一實現,代碼如下:

public function getUserInfo()
{
 $appid = "*****"; //公眾號唯一標識
 $secret = "*****"; //應用秘鑰
 //$code是回調的時候地址上帶的 只需要get方式接收就可以了
 $code = $_GET["code"]; 
 //獲取傳過來的值
 $htjid = $_GET["id"];
 //第一步:取得openid
 $oauth3Url = "https://api.weixin.qq.com/sns/oauth3/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
 $oauth3 = $this->getJson($oauth3Url);
 //第二步:根據全局access_token和openid查詢用戶信息 
 $access_token = $oauth3["access_token"]; 
 $openid = $oauth3['openid']; 
 $get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
 $userinfo = $this->getJson($get_user_info_url);
 //寫入數據庫微信用戶
 M()->startTrans();//開啟事務
 $n = M("zp_user"); //寫入的表
 $openid = $data['openid'] = $userinfo['openid']; //微信用戶openid
 $data['sex'] = $userinfo['sex']; //性別 
 $data['headimgurl'] = $userinfo['headimgurl']; //頭像
 $data['province'] = $userinfo['province']; //地區sheng
 $data['city'] = $userinfo['city']; //地區shi
 $data['subscribe_time'] = time(); //時間
 $data['qr_scene'] = $htjid; //傳過的值
 $data['nickname'] = $userinfo['nickname']; //昵稱
 $z = $n->lock(true)->add($data);
 if(!$z)
 {
 M()->rollback();//回滾
 $this->error('添加錯誤!');
 }else{
 M()->commit();//事務提交
 }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄱阳县| 重庆市| 丹巴县| 前郭尔| 安平县| 沙雅县| 楚雄市| 沾化县| 万全县| 德江县| 乌兰浩特市| 枣强县| 贺州市| 五原县| 忻城县| 台安县| 克山县| 衡东县| 库车县| 大同县| 中阳县| 柏乡县| 彰化县| 平定县| 柯坪县| 蒲城县| 错那县| 广东省| 桐乡市| 崇礼县| 文昌市| 松溪县| 西贡区| 理塘县| 扬中市| 台湾省| 聊城市| 安西县| 鄂州市| 大化| 乾安县|