隨著聊天工具的不斷發展,如今在眾多的聊天工具中微信一騎絕塵,也就是基本每個人的手機都會有微信軟件,所以微信掃碼登錄網頁端比新浪,QQ等第三方平臺登錄使用都更加廣泛。
微信掃碼網頁端實現登錄的原理,是利用公眾號頁面的微信登錄功能,不過會一些代碼的增加和改動,使手機端與PC端能形成數據的聯動,下面就著重講一下改動和增加代碼的內容。
第一步,生成一個二維碼,如下圖所示:
即用手機掃碼該二維碼后,首次登錄需獲取用戶的信息,然后網頁直接登錄,二維碼是一個跳轉的URL鏈接地址,內容如下:
//隨機字符串,用于聯運PC與手機的媒介
$rand_code = 'M'.time().rand('100001','999999');
//登錄后返回的地址
$REDIRECT_URI = '域名/Weixin/login_return?rand_code='.$rand_code;
//微信登錄地址,也是二維碼地址
$scope='snsapi_userinfo';//表示需要授權
$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state=1#wechat_redirect';//登錄驗證
vendor("phpqrcode.phpqrcode");//調用二維碼類
$level = 'L';// 點的大小:1到10,用于手機端4就可以了
$size = 7;/*二維碼的大小,下面注釋了把二維碼圖片保存到本地的代碼,如果要保存圖片,用$fileName替換第二個參數false*/
$fileName ='Uploads/qcode/2.png'; // 生成的文件名
$QRcode = new \QRcode();
$QRcode->png($url, $fileName, $level, $size);//生成二維碼
$this->qrcode = .'/'.$fileName;//二維碼路徑
$this->rand_code = $rand_code;//將隨機數傳遞到掃碼的頁面
如上所示,$url就是二維碼的內容,掃碼后手機就瀏覽$url,手機確認授權登錄后,就會返回$REDIRECT_URI的地址,方法如下:
function login_return(){
$rand_code = I('get.rand_code','');//PC生成的隨機數
$appid = C('APPID');
$secret = C('SECRET');
$code = $_GET["code"];
//獲取用戶的access_token和openid
$get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
$data = fopen($get_token_url, "rb");
$data = stream_get_contents($data);
@fclose($data);
$json_obj = json_decode($data,true);
//根據openid和access_token查詢用戶信息
$access_token = $json_obj['access_token'];
$openid = $json_obj['openid'];
$get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
$data2 = fopen($get_user_info_url, "rb");
$data2 = stream_get_contents($data2);
@fclose($data2);
//解析json
$info = json_decode($data2,true); //$info即是用戶信息的數組
}
上面是代碼,原理:手機掃碼登錄后,獲取用戶的信息,如果昵稱,頭像,地區等,最重要的是openid,根據openid查詢會員表有沒有存在,如果存在則將隨機數$rand_code更新到會員表member的rand_code里,如果不存在,則添加一行會員信息,添加的內容是用戶的昵稱,頭像,openid, rand_code,因為rand_code已經保存在會員表的,所以PC網頁端用定時執行的函數,每隔幾秒查詢會員表中是否存在rand_code,如果存在則登錄成功,并且獲取該會員的信息,PC端的JS如下:
微信登錄的功能比較簡單,主要是知道原理是怎么實現的就可以了。
本文題目:Thinkphp3.2如何使用微信掃碼實現網頁登錄的功能
URL鏈接:http://m.newbst.com/news45/235645.html
成都網站建設公司_創新互聯,為您提供云服務器、全網營銷推廣、做網站、網站制作、標簽優化、網站營銷
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯