在近幾年的互聯(lián)網(wǎng)網(wǎng)站中,使用微信登錄的場(chǎng)景可是越來(lái)越多。據(jù)統(tǒng)計(jì)2020年,全球微信高達(dá)11億,也確實(shí)如此,微信這個(gè)好用的社交工具,可以說(shuō)小到一個(gè)小學(xué)生大到你的七大姑八大姨,很多人可能沒(méi)有QQ,但他一定有微信。所以微信登錄是程序員必備的一項(xiàng)工作技能。
微信掃碼登錄對(duì)接ThinkPHP6,話(huà)不多說(shuō),直接上車(chē)。
一、準(zhǔn)備資料:
1、訪(fǎng)問(wèn) https://open.weixin.qq.com/,注冊(cè)賬戶(hù)。
2、開(kāi)發(fā)者認(rèn)證:企業(yè)。
3、創(chuàng)建一個(gè)網(wǎng)站應(yīng)用:網(wǎng)站域名必須備案(可使用二級(jí)域名),獲得相應(yīng)的AppID和AppSecret,申請(qǐng)微信登錄且通過(guò)審核。
二、接入微信登錄步驟:
首先看下微信官網(wǎng)給出的步驟說(shuō)明:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
1. 第三方發(fā)起微信授權(quán)登錄請(qǐng)求,微信用戶(hù)允許授權(quán)第三方應(yīng)用后,微信會(huì)拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時(shí)票據(jù)code參數(shù);
2. 通過(guò)code參數(shù)加上AppID和AppSecret等,通過(guò)API換取access_token;
3. 通過(guò)access_token進(jìn)行接口調(diào)用,獲取用戶(hù)基本數(shù)據(jù)資源或幫助用戶(hù)實(shí)現(xiàn)基本操作。
三、接入微信登錄實(shí)操環(huán)節(jié):
1、放好微信登錄圖標(biāo),并添加鏈接。
比如鏈接到www.a,com/index/user/weixindenglu。下面我們看下weixindenglu方法代碼。
public function weixindenglu(){ $appid='wx868f988d79a4f2bb'; $redirect_uri=urldecode('http://www.dongpaiweb.cn/index/index/weixin.html'); $url='https://open.weixin.qq.com/connect/qrconnect?appid='.$appid.'&redirect_uri='.$redirect_uri.'&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect'; header("location:".$url); }
這個(gè)時(shí)候我們點(diǎn)擊微信小圖標(biāo)就會(huì)出現(xiàn)掃碼的界面。拿出手機(jī)趕緊微信掃碼。
(注意:$redirect_uri是我們的回調(diào)地址,意思是用戶(hù)微信掃碼后的處理地址)。
2、獲得用戶(hù)的code。
微信掃碼后就跳轉(zhuǎn)到了上面定義的回調(diào)地址weixin方法。我們看下weixin方法代碼:
public function weixin(){ $code=input('get.code'); }
code獲取很簡(jiǎn)單,我們看下打印效果:
3、獲得Access Token 和openid,我們?cè)趙eixin()方法中繼續(xù)添加代碼:
public function weixin(){ $code=input('get.code'); $appid='wx868f988d79a4f25b'; $appsecret='82b426f2882b6a1398b8312cc1de037b'; $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; //json對(duì)象變成數(shù)組 $res=json_decode(file_get_contents($url),true); $access_token=$res['access_token']; $openid=$res['openid']; }
這樣我們就獲取到了access_token和openid,我們看下打印效果:
5、獲取用戶(hù)全部信息,我們?cè)趙eixin()方法中繼續(xù)添加代碼:
public function weixin(){ $code=input('get.code'); $appid='wx868f988d79a4f25b'; $appsecret='82b426f2882b6a1398b8312cc1de037b'; $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; //json對(duì)象變成數(shù)組 $res=json_decode(file_get_contents($url),true); $access_token=$res['access_token']; $openid=$res['openid']; $urlyonghu='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid; $user=json_decode(file_get_contents($urlyonghu),true); print_r($user); }
這樣我們就獲取了用戶(hù)的昵稱(chēng)、地址、頭像等信息,看下打印效果:
在我們獲取用戶(hù)微信信息后,我們就可以整理數(shù)據(jù)入庫(kù)了。
如果是用戶(hù)第一次登錄,我們可以設(shè)置綁定手機(jī)號(hào)的界面,綁定手機(jī)號(hào)后即算是注冊(cè)成功。如果我們檢測(cè)到已經(jīng)綁定手機(jī)號(hào),即代表登錄成功跳轉(zhuǎn)到成功界面。