国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

微信公眾號實現掃碼獲取微信用戶信息(網頁授權)

2024-05-05 00:08:12
字體:
來源:轉載
供稿:網友

 剛開始接觸微信的時候一頭霧水,領導想要一個掃碼獲取微信用戶信息的功能,而且是掃的別人的二維碼,我是一陣忙活啊。

經過努力和嘗試,終于功夫不負有心人啊,趕緊記錄一下,我用的是thinkphp編寫的。

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

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/oauth2/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 $oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $oauth2 = $this->getJson($oauth2Url); //第二步:根據全局access_token和openid查詢用戶信息  $access_token = $oauth2["access_token"];  $openid = $oauth2['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();//事務提交 }} 

 到此,就可以實現掃描二維碼獲取用戶信息了,并且將用戶信息寫入數據庫

這是第一個二維碼,生成后,就可以將id的參數值換成前面傳過來的值,也就是掃碼的值 $tid = 0; //傳值的參數

如果想要自己的二維碼頁面好看的話,比如想要把自己的微信昵稱和二維碼合成一張圖片的話,也是可以實現的,這就要用到圖片的合成了,下次再說吧。

總結

以上所述是小編給大家介紹的微信公眾號實現掃碼獲取微信用戶信息(網頁授權),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沾益县| 家居| 普陀区| 张家港市| 府谷县| 房山区| 泸溪县| 丹凤县| 浮山县| 钟祥市| 贞丰县| 精河县| 沂水县| 奈曼旗| 万载县| 岳西县| 开平市| 白山市| 临邑县| 阿城市| 伊吾县| 大足县| 定州市| 扬中市| 翁牛特旗| 云阳县| 宝鸡市| 科尔| 武陟县| 海口市| 庆城县| 邻水| 中山市| 新蔡县| 云梦县| 喀喇| 伽师县| 正蓝旗| 徐水县| 高台县| 桃园县|