laravel php 微信掃碼登入
參考來自 http://www.cnblogs.com/txw1958/p/scan-qrcode-login.html
自己做了微信登入 這個相當於筆記 僅供參考
微信掃碼登入需要的資料是微信開放平臺!!!
微信掃碼登入需要的資料是微信開放平臺!!!
微信掃碼登入需要的資料是微信開放平臺!!!
重要的事說三遍,之前一直用錯誤資料除錯
坑~ ..
直接進入程式碼階段
1 生產二維碼 有兩種方式
第二種方式是將二維碼嵌入網頁某個div 腦補下樣式 我不貼圖了 我下面會用方式二
在需要放二維碼的頁面引入 http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js 這個JS 然後如下程式碼
//獲取登入二維碼
$(document).on("click", ".noname-login", function () {//登入按鈕觸發事件
$(".layer").removeClass("hide");
var data = {};
var html = template('login-box', data);
var url = '{!!env("APP_URL")!!}logincallback/'+merchant.hash;
var callbackUrl = encodeURIComponent(url);
document.getElementById('layer-box').innerHTML = html;
var timestamp = (new Date()).valueOf();
var state = timestamp+Math.floor(Math.random()*100);
var obj = new WxLogin({//之前的程式碼是點選按鈕之後彈出登入彈框 然後例項化這個類 id表示放這個二維碼的div的id
id: "ewimg",
appid: "{{env('WXOPEN_APP_ID')}}",
scope: "snsapi_login",//掃碼登入用這個引數 引數固定
redirect_uri: callbackUrl,//掃碼之後成功的回撥
state: state,//隨機數
style: "",
href: ""
});
})
2 編輯回撥函式
掃描二維碼成功之後 會得到一些引數 先看程式碼 這個函式我沒貼完 只寫到最終回去到微信使用者資料 之後怎麼處理這個資料大家懂得~
public function logincallback(){
$app_id = '***********';
$app_secret = '**********';
//這裡需要拼接一個url 獲取 access_token
//appid app_secret不做贅述 code為微信伺服器返回的code grant_type引數寫法固定
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$app_id.'&secret='.$app_secret.'&code='.$_GET['code'].'&grant_type=authorization_code';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$arr=json_decode($json,1);
//用獲取到的access_token呼叫介面
//拼接URL的引數也不需要贅述了
$url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$userinfo=json_decode($json,1);
//獲取到userinfo 大工告成~